19

我已经安装了 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
4

8 回答 8

27

将下面添加到末尾.zshrc

export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh

请注意一定是最后,我不知道为什么

于 2015-11-09T07:57:58.997 回答
10

我现在可以工作了。重新安装了 oh-my-zsh。

我不确定发生了什么变化。看来我确实需要启用 nvm 插件才能正常工作。

如果没有插件,我尝试将 nvm 启动命令放入 .zprofile

export NVM_DIR="/Users/me/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

尽管该文件是在创建新外壳时加载的,但它似乎没有正确启用 NVM。

我还注意到,如果我在 .zshrc 中的 zsh 插件配置中出错,则不会出现错误,并且插件根本无法工作。所以我想这是要小心的事情。例如,我偶然使用了逗号,然后插件在没有警告的情况下中断:

plugins=(git, gitflow, nvm)
于 2015-03-22T21:43:29.433 回答
4

我正在使用带有 Hyper 和 Oh My Zsh 的 OSX 10.11.6。我必须卸载nvm通过homebrew安装的,通过 curl 命令重新安装,然后将此行添加到最底部以使其正常工作。我确信这是我所有的插件/设置/等等的东西,但这就是它对我有用的原因:

source "$NVM_DIR/nvm.sh"

在我~/.zshrc文件的最后

于 2017-01-19T19:35:24.620 回答
1

正如其他用户所指出的,将其添加到我的~/.zshrc文件中解决了这个问题。

# NVM Stuff
export NVM_DIR=~/.nvm
source $NVM_DIR/nvm.sh

只是想强调一下,直到我把它放在文件末尾附近,它才起作用。可能中间的东西弄乱了配置,我的 nvm 为每个文件夹使用了单独的上下文。

最后放置为我解决了这个问题。

于 2021-09-29T18:12:49.187 回答
1

如果你的~/.zshrc 文件中有这一行

export PATH="/usr/local/opt/node@8/bin:$PATH"

删除该行或在文件中注释掉。

于 2019-07-23T08:59:02.087 回答
1

正如安装 nvm 时 brew 所说,“将以下内容添加到 ~/.bash_profile 或所需的 shell 配置文件中:”

export NVM_DIR="$HOME/.nvm"
[ -s "$(brew --prefix)/opt/nvm/nvm.sh" ] && . "$(brew --prefix)/opt/nvm/nvm.sh" # This loads nvm
[ -s "$(brew --prefix)/opt/nvm/etc/bash_completion" ] && . "$(brew --prefix)/opt/nvm/etc/bash_completion" # This loads nvm bash_completion

尽管 .zprofile 等同于 .bash_profile,但出于某种原因,如果您将这些行添加到 .zprofile,则忽略别名。所以将它们添加到 .zshrc 中。

请参阅具有这些行的最新版本的https://formulae.brew.sh/formula/nvm 。

如果这不起作用......有些人似乎成功地在他们的 PATH 中添加了一些东西:https ://github.com/nvm-sh/nvm/issues/1703#issuecomment-356221842 。

于 2019-10-21T12:35:51.550 回答
0

使用 Linux (Ubuntu 20.04)

使用您最喜欢的编辑器,您可以编辑 ~/.zshrc

nano ~/.zshrc

在文件末尾添加:

# NVM
export NVM_DIR=~/.nvm
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"

然后你运行:

source ~/.zshrc
于 2021-06-23T06:24:59.953 回答
0

当我添加到~/.zprofile

export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh
于 2015-10-14T02:09:00.990 回答