这绝不是影响我的问题,只是出于好奇...
我已将〜/ .profile添加export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
到bash搜索中,包括一个新目录。
然后,我跑去$ source ~/.profile
重新加载May Shell,然后使用$ echo $PATH
问题是:
-为什么每次我跑步时source ~/.profile
,它都会再次附加相同的信息,
-我如何清除它?
我尝试了什么:
-尝试多次运行它,并不断添加相同内容
-试图弄清楚该source
命令的作用,但找不到它在哪里which source
第一个问题:
为什么每次我运行源〜/ .profile时,它都会再次附加相同的信息
简单来说,source <FILE>
不会重新加载您的shell。它只执行所有保存的命令,<FILE>
就像它们是您在终端中直接键入的一样。
第二个问题:
我该如何清除?
要重新加载外壳,请打开一个新的终端窗口/选项卡。只是做bash
还是exec bash
不做,因为新进程将继承其父环境。
第三个问题:
试图弄清楚source命令的作用,但是找不到它在哪里
正如我在这里曾经解释过的https://unix.stackexchange.com/a/202326/72304:
可以在Bash中运行而无需键入显式路径的所有命令,例如./command,可以分为两部分:Bash shell内置函数和外部命令。Bash shell内置程序随Bash一起安装,并且是其中的一部分,而外部命令则不是Bash的一部分。这很重要,因为Bash shell内置文件记录在man bash内,并且它们的文档也可以通过help命令调用,而外部命令通常记录在其自己的手册页中,或带有-h,--help标志之王。要检查命令是内置的Bash Shell还是外部命令:
$ type local local is a shell builtin
如果用作命令名称(来自帮助类型),它将显示如何解释命令。在这里我们可以看到local是一个内置的shell。让我们看另一个例子:
$ type vim vim is /usr/bin/vim
在您的情况下:
$ type source
source is a shell builtin
现在我们知道这不是外部命令,而是shell bultin(这就是为什么which
找不到它的原因),因此我们需要使用help
它来查看其作用:
$ help source
source: source filename [arguments]
Execute commands from a file in the current shell.
Read and execute commands from FILENAME in the current shell. The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.
Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句