使用 tmux 时未获取 nvm
When using tmux nvm isn't being sourced
我在 macOS 上使用 brew 安装 nvm,然后使用 nvm 安装 node 8.9.1 并且运行正常,直到我加载 tmux,然后我收到以下消息:
nvm is not compatible with the npm config "prefix" option: currently set to "/usr/local"
Run `npm config delete prefix` or `nvm use --delete-prefix v8.9.1 --silent` to unset it.
经过一些故障排除后,我注意到当我使用 tmux 时,它使用的是不同的 npm。
没有使用 tmux:
~ which npm
/Users/mario/.nvm/versions/node/v8.9.1/bin/npm
~ npm config get prefix
/Users/mario/.nvm/versions/node/v8.9.1
~ echo $NVM_DIR
/Users/mario/.nvm
使用 tmux:
~ which npm
/usr/local/bin/npm
~ npm config get prefix
/usr/local
~ echo $NVM_DIR
/Users/mario/.nvm
根据 brew 中的安装说明,我将以下内容添加到我的 .zshrc
export NVM_DIR="$HOME/.nvm"
. "/usr/local/opt/nvm/nvm.sh"
此外,如果我在 tmux 中手动获取 /usr/local/opt/nvm/nvm.sh,它会按预期工作。
使用 tmux:
~ which npm
/usr/local/bin/npm
~ . /usr/local/opt/nvm/nvm.sh
~ which npm
/Users/mario/.nvm/versions/node/v8.9.1/bin/npm
~ npm config get prefix
/Users/mario/.nvm/versions/node/v8.9.1
任何人都可以深入了解可能导致这种情况的原因吗?我很乐意根据需要提供更多信息。
版本:
- macOS 10.13.1
- zsh 5.4.2
- tmux 2.6
- nvm 0.33.6
- 节点 8.9.1
- npm 5.5.1
您应该在 NVM_DIR
下使用您的 nvm.sh
以下是我在.zshrc
中的nvm相关配置
export NVM_DIR=~/.nvm
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
nvm use default
如果你觉得每次打开一个新的Tmux由于nvm初始化都慢,你可以使用这个lazynvm technic
您在 nvm
之外安装了 Node 自制程序包。 nvm
正确地预置了您的 PATH
以解析正确版本的 Node 和 npm,因此您的工作结果:
~ which npm
/Users/mario/.nvm/versions/node/v8.9.1/bin/npm
~ npm config get prefix
/Users/mario/.nvm/versions/node/v8.9.1
~ echo $NVM_DIR
/Users/mario/.nvm
但是,tmux 导致您的 PATH
被修改,以解决不需要的非 nvm 版本。 path_helper
is the likely culprit here.
您可以删除有问题的自制程序包,或者通过禁用或调整 path_helper
.
的结果来确保解析正确的版本
前一个解决方案可能会打开另一个蠕虫罐头,因为您已经指出它是通过 brewfile 安装的,所以让我们看看后者。
One potential solution is to manually unset your PATH before path_helper
runs。另一种解决方案可能是修改 /etc/paths
以删除 /usr/local/bin
.
我在 macOS 上使用 brew 安装 nvm,然后使用 nvm 安装 node 8.9.1 并且运行正常,直到我加载 tmux,然后我收到以下消息:
nvm is not compatible with the npm config "prefix" option: currently set to "/usr/local"
Run `npm config delete prefix` or `nvm use --delete-prefix v8.9.1 --silent` to unset it.
经过一些故障排除后,我注意到当我使用 tmux 时,它使用的是不同的 npm。
没有使用 tmux:
~ which npm
/Users/mario/.nvm/versions/node/v8.9.1/bin/npm
~ npm config get prefix
/Users/mario/.nvm/versions/node/v8.9.1
~ echo $NVM_DIR
/Users/mario/.nvm
使用 tmux:
~ which npm
/usr/local/bin/npm
~ npm config get prefix
/usr/local
~ echo $NVM_DIR
/Users/mario/.nvm
根据 brew 中的安装说明,我将以下内容添加到我的 .zshrc
export NVM_DIR="$HOME/.nvm"
. "/usr/local/opt/nvm/nvm.sh"
此外,如果我在 tmux 中手动获取 /usr/local/opt/nvm/nvm.sh,它会按预期工作。
使用 tmux:
~ which npm
/usr/local/bin/npm
~ . /usr/local/opt/nvm/nvm.sh
~ which npm
/Users/mario/.nvm/versions/node/v8.9.1/bin/npm
~ npm config get prefix
/Users/mario/.nvm/versions/node/v8.9.1
任何人都可以深入了解可能导致这种情况的原因吗?我很乐意根据需要提供更多信息。
版本:
- macOS 10.13.1
- zsh 5.4.2
- tmux 2.6
- nvm 0.33.6
- 节点 8.9.1
- npm 5.5.1
您应该在 NVM_DIR
nvm.sh
以下是我在.zshrc
export NVM_DIR=~/.nvm
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
nvm use default
如果你觉得每次打开一个新的Tmux由于nvm初始化都慢,你可以使用这个lazynvm technic
您在 nvm
之外安装了 Node 自制程序包。 nvm
正确地预置了您的 PATH
以解析正确版本的 Node 和 npm,因此您的工作结果:
~ which npm
/Users/mario/.nvm/versions/node/v8.9.1/bin/npm
~ npm config get prefix
/Users/mario/.nvm/versions/node/v8.9.1
~ echo $NVM_DIR
/Users/mario/.nvm
但是,tmux 导致您的 PATH
被修改,以解决不需要的非 nvm 版本。 path_helper
is the likely culprit here.
您可以删除有问题的自制程序包,或者通过禁用或调整 path_helper
.
前一个解决方案可能会打开另一个蠕虫罐头,因为您已经指出它是通过 brewfile 安装的,所以让我们看看后者。
One potential solution is to manually unset your PATH before path_helper
runs。另一种解决方案可能是修改 /etc/paths
以删除 /usr/local/bin
.