【问题标题】:Make prompt only display directory when not at $HOME?不在 $HOME 时提示只显示目录?
【发布时间】:2023-03-16 13:14:01
【问题描述】:
当我在主目录时,我想阻止终端提示显示我所在的目录。
我正在使用zsh。这是我的提示配置:
PROMPT=''
# Formatting
PROMPT+='%F{8}' # dark grey
# Non zero exit codes
PROMPT+='%(?..[Exit code %?] )'
# PID when relevant
if [[ $! -ne 0 ]]; then
PROMPT+='[PID $!] '
fi
# Current dir path
PROMPT+='[%~] '
# Formatting reset
PROMPT+='%f' # color reset
【问题讨论】:
标签:
shell
command-line
zsh
prompt
【解决方案1】:
setopt PROMPT_SUBST
PROMPT+='$([[ $PWD != $HOME ]] && echo "[%~] ")'
说明
-
setopt PROMPT_SUBST 启用参数扩展($name)、命令替换($(command))和算术扩展($[exp] 或@987654326 @) 在提示符内
- PROMPT+='...' 附加到提示符后。请注意,您需要在此处使用单引号,以便在定义过程中不展开内容,而仅在显示提示时才展开内容。
-
$(command) 运行 command 并替换其输出,例如$(echo foo) 将被替换为“foo”。
-
[[ exp ]] 计算条件表达式。只有当表达式为真时,它才会返回零。请注意[[ exp ]] 是zsh 的内置语法,而类似的[ exp ] 将运行外部[(又名test)命令。
-
PWD 包含当前工作目录。
-
HOME 包含当前用户的主目录。
-
!= 测试不等式。
-
&& 仅当左侧命令成功(即返回零)时才运行右侧命令
-
echo "[%~] " 打印(部分)提示字符串。请注意,使用双引号是为了避免周围的单引号过早关闭。