SHELL指令碼啟動並執行幾種方法以及區別

來源:互聯網
上載者:User

#1 給指令碼加上執行許可權chmod u+x a.sh, 而後就可以直接用全路徑來執行指令碼了,比如當前檔案夾下用./a.sh,如果如果指令碼所在目錄在PATH環境變數之中, 則直接用a.sh即可(這和運行我們自己編寫的程式是一個道理)

    #2 sh/bash  ./a.sh  這種情況不需要指令碼具有執行許可權

    以上兩種執行方式都是在子shell中執行的,也就是說當前shell需要啟動另外一個shell,用來執行a.sh內的命令

     

    #1 source  ./a.sh  

      #2 ../a.sh(注意前面的 . )

      以上兩種執行方式是在當前shell下執行,並不需要建立子shell

      source和 . 命令的作用:用來執行一個指令碼



      前兩種方式和後兩種方式的另外區別:如果你在一個指令碼裡export $KKK=111 ,如果你用./a.sh執行該指令碼,執行完畢後,你運行 echo $KKK ,發現沒有值,如果你用source來執行 ,然後再echo ,就會發現KKK=111。因為調用./a.sh來執行shell是在一個子shell裡啟動並執行,所以執行後,結構並沒有反應到父shell裡,但是source不同它就是在本shell中執行的,所以可以看到結果。


      # 執行指令碼時是在一個子shell環境啟動並執行,指令碼執行完後該子shell自動結束

        # 一個shell中的系統內容變數只對該shell或者它的子shell有效,該shell結束時變數消失(並不能返回到父shell中)

        # 用export定義的變數會被複製到該shell的子shell中

          # 不用export定義的變數只對該shell有效,對子shell也是無效的。

          相關文章

          聯繫我們

          該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.