You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义fish_prompt时嵌入if语句失效,求助解决方法

Fish Shell 自定义提示符:修复错误状态显示失效问题

你的问题出在$status变量的特性上:fish中每执行一个命令,$status都会被更新为该命令的退出码。在你的函数里,执行prompt_pwd和__fish_git_prompt之后,$status已经变成了这两个函数的退出状态(通常是0),不再是上一个用户命令的错误码,导致if判断永远不触发。

修正后的代码如下:

function fish_prompt 
    # 提前保存上一个命令的退出状态,避免被后续命令覆盖
    set last_status $status
    echo -n $USER
    echo -n "@"
    echo -n $hostname
    echo -n " "
    echo -n (prompt_pwd)
    echo -n (__fish_git_prompt)
    if [ $last_status -ne 0 ] 
        echo -n " [$last_status] "
    end 
    echo -n "> "
end 

核心改动:

  • 在函数最开头用set last_status $status把上一个命令的退出状态存入自定义变量,锁定原始错误码。
  • 后续的条件判断和状态输出都使用$last_status,而不是会被覆盖的$status。

内容的提问来源于stack exchange,提问作者Vincent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:10:33