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)
    运行
    命令
    并替换其输出,例如,
    $(echo foo)
    将替换为“foo”
  • [[exp]]
    计算条件表达式。只有当表达式为true时,它才会返回零。请注意,
    [[exp]]
    zsh
    的内置语法,而类似的
    [exp]
    将运行外部的
    [
    (又称
    test
    )命令
  • PWD
    包含当前工作目录
  • HOME
    包含当前用户的主目录
  • !=
    测试不平等性
  • &&
    仅当左侧命令成功(即返回零)时,才向右运行命令
  • echo“[%~]”
    打印(部分)提示字符串。请注意,使用双引号是为了避免周围的单引号过早关闭
setopt PROMPT_SUBST
PROMPT+='$([[ $PWD != $HOME ]] && echo "[%~] ")'