腳本執行命令實例詳解

使用linux不免要用到執行腳本,比如一個文件a.sh,我們有時會見到用. a.sh去執行,有時見到用sh a.sh去執行,或者bash a.sh,或者source a.sh,那麼這兩種執行腳本的方式有什麼區別呢?這個問題也困惑了本人很久,今天總結一下:
首先考慮這樣子一種情況:
我的作用文件有時候路徑比較長,爲什麼不創建一個腳本放在初始路徑下,這樣運行一下直接到到位,於是有了下面的welcome.sh,內容爲:

#!/bin/bash
echo "cd /opt/jskp/jinjiwei"
cd /opt/jskp/jinjiwei

其中#! 是一個約定的標記,它告訴系統這個腳本需要什麼解釋器來執行,即使用哪一種 Shell。 echo 命令用於向窗口輸出文本。

保存到根目錄下,執行
1、. welcome.sh方法執行:
這裏寫圖片描述
如圖可見,兩條語句都被執行,第一條執行輸出第二條命令,第二條命令執行進入對應目錄。
2、source welcome.sh方法執行:
這裏寫圖片描述
3、bash welcome.sh方法執行:
這裏寫圖片描述
4、sh welcome.sh方法執行:
這裏寫圖片描述
可以看出,.或source對於腳本中的語句可以全部執行,但是sh或bash只能執行第一條語句,而且不管有沒有解釋器信息結果都是一樣的哦,很奇怪的現象,現象解釋:

這樣執行的話終端會產生一個子shell(類似於C語言調用函數),子shell去執行我的腳本,在子shell中已經切換了目錄了,但是子shell一旦執行完,馬上退出,子shell中的變量和操作全部都收回。回到終端根本就看不到這個過程的變化。引用文檔

這種情況下可以使用.或source方法解決哦,因爲.或source與加載資源類似,把腳本當作程序加載運行。


所以推薦使用. a.shsource a.sh執行腳本哦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章