如何从 bash 脚本 运行 NVM 命令

How to run NVM command from bash script

我想 运行 来自 bash 脚本的 NVM 命令,即 nvm use 0.12.7。所以,我在 bash 文件中写了:

#!/bin/bash
. ~/.nvm/nvm.sh
nvm use 0.12.7

然后 运行 终端中的命令为 sudo ./script.sh(script.sh 是我的 bash 文件,上面的代码已写在其中)。它给了我结果 Now using node v0.12.7。但是当我检查版本是否激活时,我发现没有影响。即我 运行 命令 nvm ls 并发现结果为:

v0.12.0
v0.12.7

这意味着版本 0.12.7 没有被激活。所以,我应该在 bash 脚本中写哪些东西,因为我可以从 bash 文件激活节点版本。

nvm 的优点之一是您不需要 使用sudo 来安装版本或切换到另一个版本。我不确定您为什么在 nvm 命令中使用 sudo

这个问题,其他人也说了,是版本改了个子shell。所以你的 "real" shell 中的版本没有改变。

您可以通过 运行在您的脚本前面加上 .(点 space)来完成此操作。这将使脚本能够更改当前 shell.

中的内容

这是我的 ~/bin/nvm-use-4 脚本:

. /usr/local/opt/nvm/nvm.sh
nvm use 4

并使用它:

prawie:~$ nvm current
v0.10.29
prawie:~$ . nvm-use-4
Now using node v4.2.1
prawie:~$ nvm current
v4.2.1

如果你被迫在这里使用sudo,我认为不可能完成你想要的,因为sudo'ed命令是运行在子shell.

很遗憾,您没有告诉用户您为什么要这样做或您想要完成什么。可能有更好的解决方案来解决您的问题。例如,如果您希望在打开新的 shell 时始终使用特定版本的 node.js,您可以将以下行添加到 .profile.bashrc 或等效文件:

nvm use 0.12.7