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