如何在bash脚本中运行NVM命令

12 浏览
0 Comments

如何在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日
0
0 Comments

使用 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

0