Ответ 1
вам нужно добавить обратную косую черту, чтобы получить ее оценку не во время определения FOO, но при оценке PS1, так что:
export PS1="[\$FOO]$ "
вместо:
export PS1="[$FOO]$ "
Обратите внимание на \
перед $FOO
.
Я могу установить переменную среды внутри приглашения bash следующим образом:
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]$
Можно ли это сделать в одной строке?
вам нужно добавить обратную косую черту, чтобы получить ее оценку не во время определения FOO, но при оценке PS1, так что:
export PS1="[\$FOO]$ "
вместо:
export PS1="[$FOO]$ "
Обратите внимание на \
перед $FOO
.
Попробуйте установить переменную PROMPT_COMMAND:
prompt() {
PS1="[$FOO]$ "
}
PROMPT_COMMAND=prompt
Из http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x264.html:
Bash предоставляет переменную среды, называемую PROMPT_COMMAND. Содержимое этой переменной выполняется как обычная команда Bash перед тем, как Bash отображает приглашение.