2011-09-09 5 views
18

posso impostare una variabile di ambiente all'interno prompt bash in questo modo:Come inserire una variabile d'ambiente all'interno della bash chiederà

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

Il prompt non cambia quando cambio la variabile d'ambiente: $FOO perché la variabile $FOO non è interpretato

Posso aggirare il problema eseguendo quanto segue, esportando nuovamente PS1. Ma mi piacerebbe essere in grado di farlo su una riga:

Questo può essere fatto in una riga?

risposta

31

è necessario aggiungere backslash per farlo non ha valutato nel tempo di FOO assigment ma durante la valutazione della PS1, in modo da fare:

export PS1="[\$FOO]$ " 

invece di:

export PS1="[$FOO]$ " 

Nota del \ prima dello $FOO.

+0

Si può avere caratteri di escape nella variabile '' '$ FOO'''? – Plamen

+1

o inserire il prompt tra virgolette singole: 'export PS1 = '[$ FOO] $'' – Gary

15

Prova impostando la variabile PROMPT_COMMAND:

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

PROMPT_COMMAND=prompt 

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

Bash fornisce una variabile d'ambiente chiamata PROMPT_COMMAND. Il contenuto di questa variabile viene eseguito come un normale comando Bash poco prima che Bash visualizzi un prompt.

Problemi correlati