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

如何为Fish Shell添加自定义脚本?附Ubuntu Bash自动加载nvm示例

Fish Shell实现.nvmrc自动加载方案

当然可以实现啦!我之前也折腾过这个需求,刚好能给你详细说说Fish下的配置方法,先帮你理清Fish的配置文件位置,再给你对应的脚本实现~

Fish Shell的配置文件位置

Fish的主配置文件是 ~/.config/fish/config.fish,每次启动Fish shell都会自动加载这个文件里的内容。另外,如果你想单独管理自定义函数,也可以把函数放在 ~/.config/fish/functions/ 目录下——每个函数对应一个 .fish 后缀的文件,Fish会自动识别并加载这些函数。

实现自动加载nvm的脚本

Fish里没有Bash的 PROMPT_COMMAND,但我们可以用Fish内置的 chpwd 函数——这个函数会在每次切换工作目录时自动执行,完美对应你Bash脚本里检测目录变化的逻辑。

把下面这段代码添加到 ~/.config/fish/config.fish 的末尾(或者放到 ~/.config/fish/functions/chpwd.fish 文件里):

# 定义全局变量保存上一次的工作目录
set -g old_pwd ""

function chpwd
    # 检测当前目录是否和上次不同
    if test "$old_pwd" != "$PWD"
        set old_pwd "$PWD"
        # 如果当前目录存在.nvmrc文件,自动执行nvm use
        if test -f .nvmrc
            nvm use
        end
    end
end

额外提示

如果你还没在Fish里配置好nvm的基础环境,需要先在 config.fish 里添加nvm的初始化代码(确保路径和你的nvm安装位置一致):

set -x NVM_DIR ~/.nvm
source ~/.nvm/nvm.sh

配置完成后,重启Fish shell或者执行 source ~/.config/fish/config.fish 让配置生效,之后切换到有 .nvmrc 的目录时,就会自动加载对应的Node版本啦!

内容的提问来源于stack exchange,提问作者Stéphane R.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:34:46