我想从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文件中激活节点版本。
答案 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