source 加要執行的shell script檔案名稱, shell script檔案名稱直接運行於./shell script 的區別

來源:互聯網
上載者:User

下面的內容基於Linux bash環境

在unix中運行shell指令碼的方式有很多種,假設有一個可以啟動並執行指令碼叫test.sh,可以通過source加指令檔名,source test.sh(= . ./test.sh 兩個.), 也可以通過./路徑/test.sh方式運行,如果指令碼在PATH路徑下,還可以位元組通過指令碼名運行,如test.sh。

它們之間的區別是:

source test.sh的方式讓test.sh在當前的shell 進程中運行,不啟動子shell.

./test.sh(只有一個點) 和test.sh(test.sh必須在PATH路徑中)會啟動子shell運行。

另外,當把一個shell指令碼放在PATH中的時候,尤其是沒有sh尾碼名的時候,如果系統中有alias,function和這個shell指令碼重名的話,alias和function的優先順序更高。

如,系統有一個alias: alias ft="echo ft is an alias"

同時還有一個function 也叫ft(){echo ft is a function}

然後在PATH路徑(比如說當前路徑目錄也被設為PATH)中也有一個ft指令檔,內容是echo ft is in a script

如果在shell裡運行ft,會執行alias,如果將alias去掉,unalias ft,會執行function,如果想執行指令碼ft,可以通過./ft

當運行指令碼不是你期望的結果的時候,可以通過type 指令碼名 看看是不是還有同名的alias,function,通過type -all ft 可以列出所有的ft的定義。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.