Как вставить переменную окружения в приглашение bash - PullRequest
22 голосов
/ 09 сентября 2011

Я могу установить переменную окружения в приглашении bash следующим образом:

export PS1="[\u@\H/$FOO \W]\$ "

Подсказка не изменяется при изменении переменной окружения: $FOO, поскольку переменная $FOO не интерпретируется.

Я могу обойти это, выполнив следующее, снова экспортировав PS1.Но я бы хотел сделать это в одну строку:

[user@server ]$ echo $FOO
foo
[user@server ]$ export PS1="[$FOO]$ "
[foo]$ export FOO=bla
[bla]$ 

Можно ли это сделать в одну строку?

Ответы [ 2 ]

33 голосов
/ 09 сентября 2011

вам нужно добавить обратную косую черту, чтобы оценить ее не во время назначения FOO, а во время оценки PS1, поэтому сделайте:

export PS1="[\$FOO]$ "

вместо:

export PS1="[$FOO]$ "

Примечание\ до $FOO.

17 голосов
/ 09 сентября 2011

Попробуйте установить переменную PROMPT_COMMAND:

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

PROMPT_COMMAND=prompt

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

Bash предоставляет переменную среды PROMPT_COMMAND. Содержимое этой переменной выполняется как обычная команда Bash непосредственно перед тем, как Bash отображает приглашение.

...