为什么使用点来执行配置文件

mko*_*mko 6 unix

嘿伙计们,我是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将在您当前的会话中提供.