# ./test
和
# . ./test
測試執行腳本之間的差異,例如
#!/bin/bash
export OWNER_NAME="ANGEL 12"
export ALIAS="angelique"
簡單的腳本,我知道結果,但即時通訊不能確定到底發生了什麼
謝謝
# ./test
和
# . ./test
測試執行腳本之間的差異,例如
#!/bin/bash
export OWNER_NAME="ANGEL 12"
export ALIAS="angelique"
簡單的腳本,我知道結果,但即時通訊不能確定到底發生了什麼
謝謝
./foo
執行foo
如果它被標記爲可執行文件且具有合適的shebang行(或者是ELF二進制文件)。它將在一個新的過程中執行。
. ./foo
或. foo
加載在當前外殼腳本。它等於source foo
在示例代碼中,如果希望導出的變量在shell中可用,則需要使用第二種方法。
爲什麼不在第一個場景中導出環境變量..?即時通訊仍然困惑.. – user1127747
@ user1127747:看到的問題[一個shell腳本可以設置調用shell的環境變量?](http://stackoverflow.com/questions/496702/can-a-shell-script-set-environment - 調用shell的變量)作爲答案。 – DarkDust
@ user1127747:由於腳本在其自己的進程中運行,因此無法將*回*導出到其父環境。這不僅僅是環境變量的工作原理。通過源代碼(孤立點),您可以保留在shell的進程中,因此可以自由地更改其環境。 – unwind
僅使用點,bash就是「採購」指定文件。它等同於內建的source
,並嘗試在同一個shell進程中包含並執行腳本。
./
啓動一個新進程,並且當前shell進程等待它終止。
'。/'表示*在當前目錄*中。它是一個文件路徑元素,而不是bash語法元素,不會產生子shell。 – DarkDust
@DarkDust:這可能是不準確的,我只是想概括一下調用腳本而不用源代碼的情況。 –
第一個暗示腳本(或二進制)是可執行的。用腳本(可能)包含一個shebang行來告訴使用哪個解釋器。
第二個是「執行[參數]作爲shell腳本」的縮寫。作爲參數傳遞的文件不需要設置可執行位。
我不知道你可以做#。 ./blah。好的提示。 :) – vhallac
怎麼樣? '#'應該是一個評論,背後的一切都應該被忽略!除了文件開頭的'#!'外。 – TMS