【问题标题】: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 "[%~] " 打印(部分)提示字符串。请注意,使用双引号是为了避免周围的单引号过早关闭。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-02
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      相关资源
      最近更新 更多