Linux 解释此命令:~/nvm/nvm.sh
我绝不是Linux上的新手,但我不明白为什么要把它放在Linux上。在该命令前面:Linux 解释此命令:~/nvm/nvm.sh,linux,bash,nvm,Linux,Bash,Nvm,我绝不是Linux上的新手,但我不明白为什么要把它放在Linux上。在该命令前面: . ~/nvm/nvm.sh 对于那些知道的人来说,这就是如何激活nvm bash脚本(它允许在NodeJS世界中创建虚拟环境)。但如果一个人不把起始时间放在命令前面,那么事情就不会有结果。据我所知,“.”表示当前目录。但如果我这样做: cd ~/nvm nvm.sh 还是这个 ~/nvm/nvm.sh 这是行不通的。为什么?为什么在运行此命令之前必须先放置“.”和空格 它要求解释器在当前进程中解释脚本。在
. ~/nvm/nvm.sh
对于那些知道的人来说,这就是如何激活nvm bash脚本(它允许在NodeJS世界中创建虚拟环境)。但如果一个人不把起始时间放在命令前面,那么事情就不会有结果。据我所知,“.”表示当前目录。但如果我这样做:
cd ~/nvm
nvm.sh
还是这个
~/nvm/nvm.sh
这是行不通的。为什么?为什么在运行此命令之前必须先放置“.”和空格
它要求解释器在当前进程中解释脚本。在bash
中,它相当于:
source ~/nvm/nvm.sh
如果希望脚本更改环境(变量等),则需要在当前流程中执行脚本。您可以使用帮助查看更多详细信息。
这个脚本实际上在一个新的bash进程中运行脚本。它无法更改父进程的环境,例如,它无法将变量导出到父进程。
意味着在当前shell中运行,以便共享您在脚本中设置或设置的环境变量。我敢打赌,为脚本启动一个新的shell会将它置于一个无法运行的环境中。澄清一下
是bash中的别名。它是!!!哇,一切都清楚了。非常感谢您,我不知道我怎么可能不知道这一点。有一点需要澄清——最后一个示例(没有
或源代码
)确实在新的bash
(或其他)进程中运行脚本。但是,它可以而且确实会改变环境,只是在一个子进程中,然后立即退出,因此更改将丢失。它不能更改父进程中的环境。@Orbling;严格地说(我很挑剔)
不是别名
是一个内置的,就像源代码
,它恰好执行与源代码
完全相同的代码。用户无法更改它,如果它是别名,则会发生这种情况。请参阅Bash源代码中的builtins/source.def
。@cdarke:非常正确,它只是以别名的方式工作,一种快捷助记符。
source ~/nvm/nvm.sh
~/nvm/nvm.sh