shell腳本的3種執行方式分析

執行shell腳本的三種方式包括:
1.使用“解釋器 + 文件名”的方式
2.直接指定文件名
3.使用“source + 文件名”的方式

這裏文件名可以用相對路徑也可以用絕對路徑。如果文件所在路徑被加入到$PATH中,甚至可以不指定路徑,直接指定腳本名即可。

1.使用“解釋器 + 文件名”的方式

腳本執行的只是打印一個變量,同時也過濾了當前腳本名的進程
在這裏插入圖片描述
根據上面的打印結果,重點關注下面三個特徵:
1)腳本可以直接執行,儘管並沒有執行權限。因爲這時候我們只需要有/bin/bash的執行權限和腳本的讀權限就夠了,腳本名只是作爲了/bin/bash的參數而已。
在這裏插入圖片描述
2)shellTest.sh在執行時由bash創建了一個子進程,可以看到父進程20982是bash
在這裏插入圖片描述
我們登錄終端使用的shell默認就是/bin/bash
在這裏插入圖片描述
3)腳本中定義的變量在退出腳本之後就被銷燬了

2.直接指定文件名

如果直接指定文件名,在命令中不指定解釋器,腳本是執行不了的,這時候需要在腳本中顯式的指明所用的解釋器。

在這裏插入圖片描述
這種執行方式,需要執行權限,因爲我們執行的就是shellTest.sh這個腳本。其他特徵和第一種方式沒有區別,仍然創建了一個子進程,變量仍被銷燬,

3.使用“source + 文件名”的方式

在這裏插入圖片描述
1)這種方式執行,不需要腳本的執行權限。
2)腳本在執行過程時,沒有創建子進程,執行腳本中那些命令的就是當前的bash進程20982,所以腳本第一行的#!/bin/bash都是沒有必要的了。
3)這次變量的值可以打印出來了,這根本原因就是執行腳本中的命令事當前終端的的shell執行的,並沒有創建子進程。

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