如何为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.
相关产品推荐
相关产品推荐

