在下面的命令中,为什么使用点来执行配置文件?
. ~/.profile
答案 0 :(得分:11)
正如Noufal所说,.
是source
的别名。
通过获取文件,所有命令都在当前bash会话的上下文中执行,这意味着它现在可以使用它导出的所有环境变量。
如果您运行脚本而不是源代码,它将在子shell中执行,导出的变量不会传递给您的会话。实际上,这几乎违背了.profile
的目的。
作为演示,假设您有文件test.sh
:
#!/bin/bash
# in test.sh
print "exporting HELLO"
export HELLO="my name is Paul"
如果你执行它:
[me@home]$ bash test.sh
exporting HELLO
[me@home]$ echo $HELLO
由于当前会话中未定义$HELLO
,因此无法打印出任何内容。但是,如果您采购它:
[me@home]$ . test.sh
exporting HELLO
[me@home]$ echo $HELLO
my name is Paul
然后$HELLO
将在您当前的会话中提供。
答案 1 :(得分:4)
句点运算符是source
命令的别名。详情here。
答案 2 :(得分:1)
在没有更多上下文的情况下很难说,但是一个用法是Bash特定的文件.bash_profile
包含更通用的(就Bourne shell而言)文件.profile
,因为当Bash发现首先,它不会自己加载第二个。