Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 解释此命令:~/nvm/nvm.sh_Linux_Bash_Nvm - Fatal编程技术网

Linux 解释此命令:~/nvm/nvm.sh

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 这是行不通的。为什么?为什么在运行此命令之前必须先放置“.”和空格 它要求解释器在当前进程中解释脚本。在

我绝不是Linux上的新手,但我不明白为什么要把它放在Linux上。在该命令前面:

. ~/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