starship 在 fish shell 中未生效需依次检查默认 shell 设置、初始化命令写入 config.fish、重载配置、验证运行状态及排除兼容性问题。

如果您已安装 Starship,但在 Fish shell 中提示符未生效,则可能是由于初始化命令未正确写入配置文件或未重新加载。以下是针对 Fish shell 的完整配置步骤:
一、确认 Fish shell 已设为当前默认 shell
Fish 必须是当前活跃的 shell,Starship 才能正常初始化。若尚未切换,需先设置 Fish 为默认 shell。
1、运行 cat /etc/shells 查看系统支持的 shell 列表,确认 /usr/bin/fish 存在。
2、执行 chsh -s /usr/bin/fish 将默认 shell 更改为 Fish。
3、关闭并重新打开终端,或运行 exec fish 启动 Fish 会话。
二、将 Starship 初始化命令写入 Fish 配置文件
Fish 的配置文件路径固定为 ~/.config/fish/config.fish,Starship 必须通过该文件注入初始化逻辑。
1、运行 mkdir -p ~/.config/fish 确保配置目录存在。
2、执行 echo "starship init fish | source" >> ~/.config/fish/config.fish 追加初始化语句。
3、检查是否写入成功:tail -n 1 ~/.config/fish/config.fish,输出应为 starship init fish | source。
三、重载 Fish 配置使更改立即生效
无需重启终端,Fish 支持运行时重载配置,确保新添加的初始化指令被解析执行。
1、在当前 Fish 会话中执行 source ~/.config/fish/config.fish。
2、观察提示符是否更新为 Starship 样式;若无变化,可手动触发初始化:starship init fish | source。
四、验证 Starship 是否正常运行
通过内置命令检测 Starship 是否完成加载及模块响应是否健康。
1、运行 starship --version 确认 Starship 可执行文件可用。
2、执行 starship timings 查看各模块加载耗时,确认无超时或错误模块。
3、进入任意 Git 仓库目录,检查分支名、状态符号等是否实时显示。
五、处理常见 Fish 兼容性问题
Fish 语法与 Bash/Zsh 不同,部分环境变量或函数定义方式可能干扰 Starship 初始化流程。
1、检查 ~/.config/fish/config.fish 中是否存在重复的 starship init fish | source 行,仅保留一行。
2、若提示符仍不显示,临时注释掉其他自定义 prompt 函数(如 fish_prompt 或 fish_right_prompt),避免覆盖 Starship 输出。
3、运行 set -q STARSHIP_CONFIG && echo "已设置" || echo "未设置",若未设置,可手动指定:set -gx STARSHIP_CONFIG ~/.config/starship.toml。











