बाश और zsh दोनों में, मूल्य का PS1
उपयोग शीघ्र-के रूप में नहीं किया जाता है, यह कुछ विस्तार से गुजरता है। नियम दो गोले के लिए अलग है, लेकिन दोनों ही मामलों में, कदम से एक सामान्य खोल वाक्य रचना में के रूप में ही वाक्य रचना के साथ "डॉलर" विस्तार (चर प्रतिस्थापन, आदेश प्रतिस्थापन, गणित मूल्यांकन) प्रदर्शन करने के लिए है ( , , या , , ) ।$VARIABLE
${VARIABLE}
$(COMMAND)
`COMMAND`
$((EXPRESSION))
$[EXPRESSION]
- बाश में, डॉलर के विस्तार को डिफ़ॉल्ट रूप से चालू किया जाता है, लेकिन इसके साथ बंद किया जा सकता है
shopt -u promptvars
।
- Zsh में, डॉलर का विस्तार डिफ़ॉल्ट रूप से बंद है, लेकिन कई लोग (और वेब पर आपको मिलने वाले अधिकांश कॉन्फ़िगरेशन फ़्रेमवर्क) इसे चालू करेंगे
setopt prompt_subst
।
शीघ्रता में डॉलर के विस्तार के साथ, 6-वर्ण मान पर PS1='$(pwd)'
सेट PS1
होता है $(pwd)
और इस प्रकार $(pwd)
प्रतिस्थापित किया जाता है, और इसलिए pwd
कमांड को निष्पादित किया जाता है, हर बार शेल एक नया संकेत प्रदर्शित करता है। दूसरी ओर, उस समय जो भी शेल की वर्तमान कार्यशील निर्देशिका है , उसे PS1=$(pwd)
सेट PS1
करता है। यदि आपके पास डॉलर का विस्तार बंद था, तो PS1='$(pwd)'
संकेत का शाब्दिक स्ट्रिंग होगा $(pwd)
।
ध्यान दें कि प्रॉम्प्ट में कार्यशील निर्देशिका प्राप्त करने के लिए और अधिक सुविधाजनक तरीके हैं:
- बैश में, एक बैकस्लैश भागने के साथ जैसे कि
\w
, जो आपके होम डायरेक्टरी को संक्षिप्त करता है ~
और सेटिंग द्वारा ट्रिम किया जा सकता है PROMPT_DIRTRIM
।
- Zsh में, एक प्रतिशत से बचने के साथ जैसे (
%/
या%~
%/
जैसा है $PWD
, %~
होम निर्देशिकाओं को संक्षिप्त करता है), जिसमें ट्रिमिंग सेटिंग हो सकती है।
- किसी भी शेल (और किसी अन्य बॉर्न-शैली शेल) में,
$PWD
इसके बराबर है $(pwd)
: आपको वर्तमान कार्यशील निर्देशिका प्राप्त करने के लिए उपप्रोसेस चलाने की आवश्यकता नहीं है।