用戶登錄時(shí),將會取得一個(gè) bash ,這個(gè) bash 在系統(tǒng)中有一個(gè)全局唯一的ID,也就是進(jìn)程的ID,使用命令 ps -ef 并配合 grep 來查看進(jìn)程ID。 ps -ef|grep bash ,此命令還能查看進(jìn)程對應(yīng)的父進(jìn)程ID,系統(tǒng)中所有進(jìn)程的祖先進(jìn)程都是INIT進(jìn)程(進(jìn)程ID=1),它是最先啟動(dòng)運(yùn)行的。
創(chuàng)新互聯(lián)成立與2013年,我們提供高端網(wǎng)站建設(shè)、小程序制作、電商視覺設(shè)計(jì)、成都APP應(yīng)用開發(fā)及網(wǎng)絡(luò)營銷搜索優(yōu)化服務(wù),在傳統(tǒng)互聯(lián)網(wǎng)與移動(dòng)互聯(lián)網(wǎng)發(fā)展的背景下,我們堅(jiān)守著用標(biāo)準(zhǔn)的設(shè)計(jì)方案與技術(shù)開發(fā)實(shí)力作基礎(chǔ),以企業(yè)及品牌的互聯(lián)網(wǎng)商業(yè)目標(biāo)為核心,為客戶打造具商業(yè)價(jià)值與用戶體驗(yàn)的互聯(lián)網(wǎng)+產(chǎn)品。
回到 bash 進(jìn)程,也就是我們的命令行界面,進(jìn)程的執(zhí)行都有其附屬的執(zhí)行環(huán)境,環(huán)境變量就屬于其中之一。并且環(huán)境變量是可以完全被子進(jìn)程繼承的,也就是說,子進(jìn)程可以使用父進(jìn)程的環(huán)境變量,但是不能使用父進(jìn)程的自定義變量。
簡而言之: 子進(jìn)程繼承父進(jìn)程的環(huán)境變量,不繼承父進(jìn)程的自定義變量。
shell腳本有4種執(zhí)行方式,不同的執(zhí)行方式可能導(dǎo)致結(jié)果不一致
四種方式的執(zhí)行結(jié)果如下:
對于單個(gè)命令執(zhí)行大多數(shù)人都是明了的,也就是在一個(gè)命令行上執(zhí)行一條命令。那對于在一行上執(zhí)行多個(gè)命令怎么辦呢,其實(shí)也很簡單,只需在各命令之間加上特殊命令符號,我們常規(guī)使用到的有3個(gè)特殊命令符號。
1. [;]
如果被分號(;)所分隔的命令會連續(xù)的執(zhí)行下去,就算是錯(cuò)誤的命令也會繼續(xù)執(zhí)行后面的命令。
2. []
如果命令被所分隔,那么命令也會一直執(zhí)行下去,但是中間有錯(cuò)誤的命令存在就不會執(zhí)行后面的命令,沒錯(cuò)就直行至完為止。
3. [||]
如果每個(gè)命令被雙豎線||所分隔,那么一遇到可以執(zhí)行成功的命令就會停止執(zhí)行后面的命令,而不管后面的命令是否正確與否。如果執(zhí)行到錯(cuò)誤的命令就是繼續(xù)執(zhí)行后一個(gè)命令,一直執(zhí)行到遇到正確的命令為止。
在Linux下,如果你需要執(zhí)行shell腳本,那么應(yīng)該使用那個(gè)命令呢?下面由我為大家整理了linux shell腳本執(zhí)行命令的相關(guān)知識,希望對大家有幫助!
linux shell腳本執(zhí)行
linux shell腳本執(zhí)行方法一: 切換到shell腳本所在的目錄(此時(shí),稱為工作目錄)執(zhí)行shell腳本:
cd /data/shell
./hello.sh
./的意思是說在當(dāng)前的工作目錄下執(zhí)行hello.sh。如果不加上./,bash可能會響應(yīng)找到不到hello.sh的錯(cuò)誤信息。因?yàn)槟壳暗墓ぷ髂夸?/data/shell)可能不在執(zhí)行程序默認(rèn)的搜索路徑之列,也就是說,不在環(huán)境變量PASH的內(nèi)容之中。查看PATH的內(nèi)容可用 echo $PASH 命令?,F(xiàn)在的/data/shell就不在環(huán)境變量PASH中的,所以必須加上./才可執(zhí)行。
linux shell腳本執(zhí)行方法二: 以絕對路徑的方式去執(zhí)行bash shell腳本:
/data/shell/hello.sh
linux shell腳本執(zhí)行方法三: 直接使用bash 或sh 來執(zhí)行bash shell腳本:
cd /data/shell
bash hello.sh
或
cd /data/shell
sh hello.sh
注意,若是以方法三的方式來執(zhí)行,那么,可以不必事先設(shè)定shell的執(zhí)行權(quán)限,甚至都不用寫shell文件中的第一行(指定bash路徑)。因?yàn)榉椒ㄈ菍ello.sh作為參數(shù)傳給sh(bash)命令來執(zhí)行的。這時(shí)不是hello.sh自己來執(zhí)行,而是被人家調(diào)用執(zhí)行,所以不要執(zhí)行權(quán)限。那么不用指定bash路徑自然也好理解了啊。
linux shell腳本執(zhí)行方法四: 在當(dāng)前的shell環(huán)境中執(zhí)行bash shell腳本:
cd /data/shell
. hello.sh
或
cd /data/shell
source hello.sh
前三種方法執(zhí)行shell腳本時(shí)都是在當(dāng)前shell(稱為父shell)開啟一個(gè)子shell環(huán)境,此shell腳本就在這個(gè)子shell環(huán)境中執(zhí)行。shell腳本執(zhí)行完后子shell環(huán)境隨即關(guān)閉,然后又回到父shell中。而方法四則是在當(dāng)前shell中執(zhí)行的。