2013-12-10 90 views
7

我用一個腳本,test.sh,由別人寫的,開始一個bash家當:猛砸家當-l選項

#!/bin/bash -l 
... 
echo TEST: $TEST 

從我能看到的,這有腳本中使用的變量的影響:

  • ,如果我跑TEST=hey ./test.sh,我可以看到TEST: hophop是可變TEST在我.bash_profile
  • 的價值,這是相同的,如果我export TEST=hey運行腳本
  • 但在此之前,如果我刪除-l標誌,同樣的命令返回TEST: hey,因爲我本來期望

有人可以解釋這種現象? bash的幫助沒有幫助。

回答

15

-l選項(根據man page)使「bash的行爲就好像它已被調用爲登錄shell」。登錄shell從您的主目錄讀取某些初始化文件,例如.bash_profile。由於您在.bash_profile中設置了TEST的值,因此在啓動bash時,您在命令行上設置的值將被覆蓋。

+0

好的,謝謝! – Emmanuel