嘿伙计们,我是Linux的新手.
在下面的命令中,为什么使用点来执行配置文件?
. ~/.profile
Run Code Online (Sandbox Code Playgroud)
Sha*_*hin 11
正如Noufal所说,.
是别名source
.
通过获取文件,所有命令都在当前bash会话的上下文中执行,这意味着它现在可以使用它导出的所有环境变量.
如果您运行脚本而不是源代码,则它将在子shell中执行,导出的变量不会传递给您的会话.实际上,这几乎违背了目的.profile
.
作为演示,假设你有文件test.sh
:
#!/bin/bash
# in test.sh
print "exporting HELLO"
export HELLO="my name is Paul"
Run Code Online (Sandbox Code Playgroud)
如果你执行它:
[me@home]$ bash test.sh
exporting HELLO
[me@home]$ echo $HELLO
Run Code Online (Sandbox Code Playgroud)
由于$HELLO
未在当前会话中定义,因此无法打印出任何内容.但是,如果您采购它:
[me@home]$ . test.sh
exporting HELLO
[me@home]$ echo $HELLO
my name is Paul
Run Code Online (Sandbox Code Playgroud)
然后$HELLO
将在您当前的会话中提供.