Zsh
zsh 中的 PS1 變數未發生命令替換
我很難在 Ubuntu 17.10 上使用zsh
PS1
在提示符中獲取動態評估的命令輸出。這是我所做的一些嘗試(我從 directory 開始,提示以粗體顯示):/abc
**$** export PS1="$(pwd) > " **/abc >** cd /def **/abc >** pwd /定義 **/abc >**導出 PS1="\$(pwd) > " **$(pwd) >**導出 PS1='$(pwd) > ' **$(pwd) >**導出 PS1='\$(pwd) > ' **\$(pwd) >** *[怒退]*
第一個結果是最接近的,但是當我定義變數時,該命令似乎
pwd
只被評估一次。PS1
顯然有些東西我不明白。$(<cmd>)
每次顯示命令提示符時,我該怎麼做才能重新評估?
要讓
zsh
shell 對 的值執行命令替換PS1
,請設置PROMPT_SUBST
shell 選項:set -o PROMPT_SUBST PS1='$(pwd) > '
export
請注意,不需要PS1
變數。之所以
PROMPT_SUBST
預設不設置 shell 選項,可能是因為zsh
shell 已經有豐富的語法來進行提示擴展。例如,您的範例可以替換為
PS1='%/ > '
有關這方面的更多資訊,請參閱
zshmisc
系統手冊中的“擴展提示序列”部分。當你使用
PS1="$(pwd) > "
PS1
在賦值發生之前,賦予變數的值被擴展。這就是為什麼當你改變目錄時它不會改變。