4

我绝不是 Linux 上的新手,但我就是不明白为什么必须将 . 在这个命令前面:

. ~/nvm/nvm.sh

对于那些知道的人来说,这是激活 nvm bash 脚本的方法(它允许在 NodeJS 世界中创建一个虚拟环境)。但是,如果一个人不把那个开始时间放在命令前面,那么事情就不会成功。据我所知,“。” 表示当前目录。然而,如果我这样做:

cd ~/nvm
nvm.sh

或这个

~/nvm/nvm.sh

不起作用。为什么?为什么一定要放“。” 然后是运行此命令之前的空格。

4

2 回答 2

13
. ~/nvm/nvm.sh

它要求解释器解释当前进程中的脚本。在bash它相当于:

source ~/nvm/nvm.sh

如果要更改环境(变量等),则需要在当前进程中执行脚本。您可以查看更多详细信息help .


~/nvm/nvm.sh

这实际上是在一个新的 bash 进程中运行脚本。它不能改变父进程的环境,例如它不能将变量导出到父进程。

于 2012-09-05T16:50:16.403 回答
2

.方法在当前 shell 中运行,因此您已设置或在脚本中设置的环境变量是共享的。我敢打赌,为脚本启动一个新的 shell 会将其置于无法运行的环境中。

于 2012-09-05T16:51:11.380 回答