如何从bash脚本

时间:2015-12-22 04:10:28

标签: node.js bash shell unix 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文件,其中编写了上面的代码)。它给了我结果Now using node v0.12.7。但当我检查版本是否激活时,我发现没有任何影响。即我运行了命令nvm ls,结果为:

v0.12.0
v0.12.7

该平均版本0.12.7未被激活。那么,我应该在bash脚本中编写哪些内容,因为我可以从bash文件中激活节点版本。

1 个答案:

答案 0 :(得分:7)

nvm的一个优点是需要使用sudo来安装版本或切换到其他版本。我不确定您在sudo命令中使用nvm的原因。

正如其他人所说,问题是版本在子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中运行的。

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

nvm use 0.12.7