2011-09-09 16 views
18

मैं इस तरह बैश शीघ्र अंदर एक वातावरण चर सेट कर सकते हैं:कैसे बैश के अंदर एक वातावरण चर डालने के लिए संकेत

export PS1="[\[email protected]\H/$FOO \W]\$ " 

शीघ्र परिवर्तन नहीं होता है जब मैं वातावरण चर बदलने के लिए: $FOO क्योंकि $FOO चर व्याख्या नहीं है।

मैं निम्नलिखित करने के बाद, PS1 को दोबारा निर्यात करके इसके आसपास काम कर सकता हूं।

[[email protected] ]$ echo $FOO 
foo 
[[email protected] ]$ export PS1="[$FOO]$ " 
[foo]$ export FOO=bla 
[bla]$ 

इस एक लाइन में किया जा सकता है: लेकिन मैं एक लाइन पर यह करने के लिए सक्षम होने के लिए चाहते हैं?

उत्तर

31

आप बैकस्लैश जोड़ने के लिए यह FOO असाइनमेंट के समय में लेकिन PS1 के मूल्यांकन के दौरान नहीं का मूल्यांकन पाने के लिए, ऐसा करने की जरूरत है

export PS1="[$FOO]$ " 

नोट $FOO से पहले।

+0

क्या आपके पास चरित्र '' 'FOO''' वैरिएबल में बच सकता है? – Plamen

+1

या प्रॉम्प्ट को एकल कोट्स में रखें: 'निर्यात PS1 =' [$ FOO] $ '' – Gary

15

PROMPT_COMMAND चर सेट करके देखें:

prompt() { 
    PS1="[$FOO]$ " 
} 

PROMPT_COMMAND=prompt 

http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x264.html से:

बैश एक वातावरण चर PROMPT_COMMAND कहा जाता है प्रदान करता है। बैश को एक प्रॉम्प्ट प्रदर्शित करने से ठीक पहले इस चर की सामग्री नियमित बैश कमांड के रूप में निष्पादित की जाती है।

export PS1="[\$FOO]$ " 

के बजाय:

संबंधित मुद्दे