提问者:小点点

如何从bash脚本运行NVM命令


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

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

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

v0.12.0
v0.12.7

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


共1个答案

匿名用户

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

正如其他人也说过的那样,问题在于版本是在子shell中更改的。所以你的“真实”shell中的版本没有改变。

您可以通过在它前面运行带有.(点空间)的脚本来实现这一点。这将使脚本能够更改当前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中运行的。

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

nvm use 0.12.7