2011-02-17 51 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發現第一個時,它不會加載第二個本身。

相關問題