不在$ HOME时,仅提示显示目录?

时间:2018-06-18 22:14:19

标签: 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+='[%~] '

# Formatting reset
PROMPT+='%f' # color reset

1 个答案:

答案 0 :(得分:2)

setopt PROMPT_SUBST
PROMPT+='$([[ $PWD != $HOME ]] && echo "[%~] ")'

说明

  • setopt PROMPT_SUBST启用参数扩展$name),命令替换$(command))和算术扩展$[exp]$((exp))
  • PROMPT + ='...'追加到提示。请注意,您需要在此处使用单引号,以便在定义期间不会扩展内容,而仅在显示提示时才扩展内容。
  • $(command)运行command并替换其输出,例如$(echo foo)将被替换为“ foo”。
  • [[ exp ]]计算条件表达式。仅当表达式为true时,它将返回零。请注意,[[ exp ]]zsh的内置语法,而类似的[ exp ]将运行外部[(又名test)命令。
  • PWD包含当前工作目录。
  • HOME包含当前用户的主目录。
  • !=测试不平等情况。
  • &&仅在左边的命令成功执行(即返回零)的情况下在右边运行命令
  • echo "[%~] "打印(部分)提示字符串。请注意,使用双引号是为了避免周围的单引号过早关闭。