Linux中執行Shell腳本的4種方法

bash shell 腳本的方法有多種,現在作個總整理。

假設、我們撰寫好的Shell腳本的文件名為hello.sh,文件位置在/data/shell目錄中並已有執行權限。

方法一:切換到Shell腳本所在的目錄 (此時,稱為工作目錄) 執行Shell腳本:

複製代碼如下:

cd /data/shell

./hello.sh

./的意思是說:在當前的工作目錄下執行hello.sh。如果不加上./,bash可能會回應找不到hello.sh的錯誤訊息!
因為目前的工作目錄(/data/shell)可能不在執行程序默認的搜索路徑之列,也就是說,不在環境變量PASH的內容之中。
查看PATH的內容可用 echo $PASH 命令。
現在的/data/shell就不在環境變量PASH中的,所以必須加上./才可以執行。

方法二:以絕對路徑的方式去執行bash shell腳本:

複製代碼如下:

/data/shell/hello.sh

方法三:直接使用 bash 或 sh 來執行 bash shell腳本:

複製代碼如下:

cd /data/shell

bash hello.sh

複製代碼如下:

cd /data/shell

sh hello.sh

注意:若是以方法三的方式來執行,那麼,可以不必事先設定Shell的執行權限,甚至都不用寫Shell文件中的第一行(指定bash路徑)。
因為方法三是將hello.sh作為參數傳給sh(bash)命令來執行的!
這時不是hello.sh自己來執行,而是被人家調用執行,所以不要執行權限。
那麼不用指定bash路徑自然也好理解了!

方法四:在當前的Shell環境中執行bash shell腳本:

複製代碼如下:

cd /data/shell

. hello.sh

複製代碼如下:

cd /data/shell

source hello.sh

前三種方法執行Shell腳本時都是在當前shell(稱為父shell)開啟一個子shell環境,此shell腳本就在這個子shell環境中執行。
shell腳本執行完後,子shell環境隨即關閉,然後又回到父shell中!
而方法四則是在當前shell中執行的!

13 thoughts on “Linux中執行Shell腳本的4種方法”

  1. Everyone loves what you guys are usually up too. This sort of clever work and reporting!
    Keep up the terrific works guys I’ve added you guys to my blogroll.

  2. Hey there just wanted to give you a quick heads up. The text in your article seem to be running off the screen in Firefox.
    I’m not sure if this is a formatting issue or something
    to do with internet browser compatibility but I figured I’d post
    to let you know. The layout look great though! Hope you get
    the problem solved soon. Cheers

  3. Thanks for the sensible critique. Me and my neighbor were just preparing to do some research on this. We got a grab a book from our area library but I think I learned more clear from this post. I’m very glad to see such fantastic information being shared freely out there.

  4. Pingback: Google

  5. Please let me know if you’re looking for a article writer
    for your weblog. You have some really good posts and I believe I would be a good asset.
    If you ever want to take some of the load off, I’d really like to write
    some material for your blog in exchange for a link back
    to mine. Please send me an e-mail if interested.
    Kudos!

  6. Pingback: Google

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料