2011-02-17 20 views

回答

11

正如Noufal所述,.source的别名。

通过采集文件,所有命令都在当前bash会话的上下文中执行,这意味着它将导出的所有环境变量现在都可供您使用。

如果您运行脚本而不是源代码,它会在子shell中执行,导出的变量不会传递到您的会话。实际上,这几乎违背了.profile的目的。

作为示范,说你有文件test.sh

#!/bin/bash 
# in test.sh 
print "exporting HELLO" 
export HELLO="my name is Paul" 

如果你执行它:因为$HELLO

[[email protected]]$ bash test.sh 
exporting HELLO 
[[email protected]]$ echo $HELLO 

没有被打印出来,是不是在当前会话定义。但是,如果它来源:

[[email protected]]$ . test.sh 
exporting HELLO 
[[email protected]]$ echo $HELLO 
my name is Paul 

然后$HELLO将在当前会话。

+0

很好的例子,但在这个命令:cp /usr/local/1.txt。点仍然代表来源?或者在这方面有其他含义 – mko 2011-02-19 04:10:29

4

周期运算符是source命令的别名。详情here

+1

你的链接说:>> ...源是点/期''的同义词。在bash中,但不在POSIX sh中,所以为了最大限度的兼容性使用这个周期。 ... << 我发现有用的信息 – eli 2018-01-05 13:44:53

1

很难说没有更多的上下文,但一个用法是Bash特定文件.bash_profile包含更一般的(至于Bourne shell去)文件.profile,因为当Bash发现第一个时,它不会加载第二个本身。

相关问题