我已经安装了 NVM,然后我发现了 oh-my-zsh 并安装了它。它似乎有一个 nvm 插件,我在 .zshrc 中启用了它。
我也把它放在我的 .zprofile
export NVM_DIR="/Users/me/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
现在我可以使用 nvm,但是每当我将别名默认设置为不同的版本时,nvm 会在我下次打开 shell 时切换回来。
$ iojs -v
v1.2.0
$ which iojs
/Users/me/.nvm/versions/io.js/v1.2.0/bin/iojs
$ nvm use 1.5.1
Now using io.js v1.5.1
$ nvm alias default iojs v1.5.1
default -> iojs (-> iojs-v1.5.1)
$ which iojs
/Users/me/.nvm/versions/io.js/v1.5.1/bin/iojs
然后打开一个新的shell后:
$ which iojs
/Users/me/.nvm/versions/io.js/v1.2.0/bin/iojs
我的旧 bash 安装会以某种方式搞砸吗?我在 OSX 顺便说一句,但我想这没有什么区别。
--------- 编辑 ------ 根据要求提供更多输出
➜ ~ nvm version
iojs-v1.2.0
➜ ~ ls $NVM_DIR/alias
default
➜ ~ cat $NVM_DIR/alias/default
iojs
➜ ~ nvm alias iojs
iojs -> iojs-v1.5 (-> iojs-v1.5.1) (default)
➜ ~ nvm alias $(cat $NVM_DIR/alias/default)
iojs -> iojs-v1.5 (-> iojs-v1.5.1) (default)
我刚刚发现为什么我认为它会恢复到 1.2.0。在安装 oh-my-zsh 期间,它似乎从我的 Bash shell 中获取了活动 PATH 并将其复制到 .zshrc 文件中,包括当时的活动 nvm 路径:
/Users/me/.nvm/versions/io.js/v1.2.0/bin
但是从 PATH 中删除它之后,现在我的 zsh 在启动新的 shell 后找不到任何 Node 二进制文件。所以问题仍然是我的问题,为什么没有记住 NVM 设置?我仍然可以像以前一样将它设置在活动外壳中,它只是不粘。
我现在认为我的 oh-my-zsh 安装可能存在根本问题。例如,我在 zshrc 中启用了 git 插件,但命令“gst”不是有效的别名。
插件=(git、gitflow、nvm、brew、tmux)
➜ ~ gst
zsh: command not found: gst