如何从 bash 脚本 运行 NVM 命令
How to run NVM command from bash script
我想 运行 来自 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 文件激活节点版本。
nvm
的优点之一是您不需要 使用sudo
来安装版本或切换到另一个版本。我不确定您为什么在 nvm
命令中使用 sudo
。
这个问题,其他人也说了,是版本改了个子shell。所以你的 "real" shell 中的版本没有改变。
您可以通过 运行在您的脚本前面加上 .
(点 space)来完成此操作。这将使脚本能够更改当前 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
我想 运行 来自 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 文件激活节点版本。
nvm
的优点之一是您不需要 使用sudo
来安装版本或切换到另一个版本。我不确定您为什么在 nvm
命令中使用 sudo
。
这个问题,其他人也说了,是版本改了个子shell。所以你的 "real" shell 中的版本没有改变。
您可以通过 运行在您的脚本前面加上 .
(点 space)来完成此操作。这将使脚本能够更改当前 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