如何在bash脚本中运行NVM命令
如何在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文件)。它给我返回结果:Now using node v0.12.7
。但是当我检查这个版本是否被激活时,我发现没有变化。即我运行了命令 nvm ls
,结果是:
v0.12.0 v0.12.7
这意味着版本 0.12.7
没有被激活。那么,我应该在bash脚本中写什么才能从bash文件中激活node版本。
admin 更改状态以发布 2023年5月21日
使用 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 命令是在子 shell 中运行的。
不幸的是,您没有告诉我们为什么要这样做或想要实现什么。对于您的问题可能存在更好的解决方案。例如,如果您希望在打开新 shell 时始终使用特定版本的 node.js
,您可以将以下行添加到 .profile
、.bashrc
或等效文件中:
nvm use 0.12.7