我很难在 Ubuntu 17.10 上使用zshPS1
在提示符中获取动态评估的命令输出。这是我所做的一些尝试(我从 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 选项:export
请注意,不需要PS1
变量。之所以
PROMPT_SUBST
默认不设置 shell 选项,可能是因为zsh
shell 已经有丰富的语法来进行提示扩展。例如,您的示例可以替换为
有关这方面的更多信息,请参阅
zshmisc
系统手册中的“扩展提示序列”部分。当你使用
PS1
在赋值发生之前,赋予变量的值被扩展。这就是为什么当你改变目录时它不会改变。