我想在 ZSH 提示符中列出我的 Python 虚拟环境的名称,但我无法让它工作。它被列为环境变量 (VIRTUAL_ENV)。我已经设置了另一个脚本,该脚本正确地返回我的虚拟环境 (envTest) 的基本名称,但尝试将其合并到我的提示符中也不起作用。
提示配置:
PROMPT="╭─${user_host} ${current_dir} [${VIRTUAL_ENV}] ${rvm_ruby} ${git_branch}
╰─%B${user_symbol}%b "
安慰:
╭─user@server ~/Projects/virtualenvTest []
╰─$ echo $VIRTUAL_ENV
╭─user@server ~/Projects/virtualenvTest []
╰─$ source envTest/bin/activate
╭─user@server ~/Projects/virtualenvTest []
╰─$ echo $VIRTUAL_ENV
/home/user/Projects/virtualenvTest/envTest
我可以让其他环境变量显示在我的提示中(例如 LANG)。
提示配置:
PROMPT="╭─${user_host} ${current_dir} [${LANG}] ${rvm_ruby} ${git_branch}
╰─%B${user_symbol}%b "
安慰:
╭─user@server ~/Projects/virtualenvTest [en_US.UTF-8]
╰─$ echo $LANG
en_US.UTF-8
答案1
如果您在定义时实际使用了双引号,PROMPT
那么其中的所有参数都会在定义时被替换,而不是每次打印提示时都被替换。您可以通过使用$VIRTUAL_ENV
不同的引号来防止这种情况。
由于将整个提示放在单引号中以防止替换$VIRTUAL_ENV
可能会破坏提示的其余部分,请尝试$
通过在前面添加一个来引用\
,如下所示
PROMPT="╭─${user_host} ${current_dir} [\${VIRTUAL_ENV}] ${rvm_ruby} ${git_branch}
╰─%B${user_symbol}%b "
我怀疑其他参数之所以有效,是因为它们被替换为每次都会被评估的内容。例如,${user_host}
可能被替换为至少包含提示转义符%n
且中间%m
包含的内容。@
${LANG}
有效,因为当您设置提示时它已经包含了预期值。
您可以通过运行以下命令轻松确认这一点:
echo $PROMPT