Shell 当不在$HOME时,是否仅显示目录?
当我在主目录时,我想阻止终端提示符显示我所在的目录 我正在使用Shell 当不在$HOME时,是否仅显示目录?,shell,command-line,zsh,prompt,Shell,Command Line,Zsh,Prompt,当我在主目录时,我想阻止终端提示符显示我所在的目录 我正在使用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
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
解释
在提示符中启用参数扩展(setopt提示符\u SUBST
)、命令替换($name
)和算术扩展($(command)
或$[exp]
)$(exp))
- 提示符+=“…”追加到提示符后。请注意,此处需要使用单引号,以便在定义期间内容不会展开,而仅在显示提示时展开
运行$(command)
并替换其输出,例如,命令
将替换为“foo”$(echo foo)
计算条件表达式。只有当表达式为true时,它才会返回零。请注意,[[exp]]
是[[exp]]
的内置语法,而类似的zsh
将运行外部的[exp]
(又称[
)命令test
包含当前工作目录PWD
包含当前用户的主目录HOME
测试不平等性!=
仅当左侧命令成功(即返回零)时,才向右运行命令&&
打印(部分)提示字符串。请注意,使用双引号是为了避免周围的单引号过早关闭echo“[%~]”
setopt PROMPT_SUBST
PROMPT+='$([[ $PWD != $HOME ]] && echo "[%~] ")'