如何執行linux shell程式

2021-06-27 07:14:52 字數 2227 閱讀 7263

如何執行shell程式,如何在shell程式以及後續指令碼中使用同乙個變數,這些在工作中經常用到, 我找到如下的文章,再加深複習一下。

source filename

作用:在當前bash環境下讀取並執行filename中的命令。該filename檔案可以無"執行許可權"

注:該命令通常用命令「.」來替代。

如:source .bash_profile

. .bash_profile兩者等效。

source(或點)命令通常用於重新執行剛修改的初始化文件。

source命令(從 c shell 而來)是bash shell的內建命令。

點命令,就是個點符號,(從bourne shell而來)。

source的程式主體是bash,指令碼中的$0變數的值是bash,而且由於作用於當前bash環境,指令碼中set的變數將直接起效

sh/bash filename

作用:開啟乙個子shell來讀取並執行filename中命令。該filename檔案可以無"執行許可權"

注:執行乙個shell指令碼時會啟動另乙個命令直譯器.

每個shell指令碼有效地執行在父shell(

parent

shell)的乙個子程序裡.

這個父shell是指在乙個控制終端或在乙個xterm視窗中給你命令指示符的程序.

shell指令碼也可以啟動他自已的子程序.

這些子shell(即子程序)使指令碼並行地,有效率地地同時執行指令碼內的多個子任務.

在ubuntu中sh只是bash的乙個鏈結。

由於是在子shell中執行,指令碼設定的變數不會影響當前shell。

./filename

作用:開啟乙個子shell來讀取並執行filename中命令。該filename檔案需要"執行許可權"

注:執行乙個shell指令碼時會啟動另乙個命令直譯器.

每個shell指令碼有效地執行在父shell(

parent

shell)的乙個子程序裡.

這個父shell是指在乙個控制終端或在乙個xterm視窗中給你命令指示符的程序.

shell指令碼也可以啟動他自已的子程序.

這些子shell(即子程序)使指令碼並行地,有效率地地同時執行指令碼內的多個子任務.

由於是在子shell中執行,指令碼設定的變數不會影響當前shell。

乙個變數建立時,它不會自動地為在它之後建立的shell程序所知。而命令export可以向後面的shell傳遞變數的值。當乙個

shell指令碼呼叫並執行時,它不會自動得到原為指令碼(呼叫者)裡定義的變數的訪問權,除非這些變數已經被顯式地設定為可用。

export命令可以用於傳遞乙個或多個變數的值到任何後繼指令碼

比如您在乙個指令碼裡export $kkk=111 ,假如您用./a.sh執行該指令碼,執行完畢後,您執行 echo $kkk ,發現沒有值,假如您用source來執行 ,然後再echo ,就會發現kkk=111。因為呼叫./a.sh來執行shell是在乙個子shell裡執行的,所以執行後,結構並沒有反應到父shell裡,但是 source不同他就是在本shell中執行的,所以能夠看到結果.

小測試1 建立test.sh

#!/bin/bash

export s=/home/jboss/

2 執行命令: source test.sh

echo $s

結果輸出: /home/jboss/

3 新開個shell

執行命令:  ./test.sh

echo $s

結果:  沒有輸出s值

1、執行指令碼時是在乙個子shell環境執行的,指令碼執行完後該子shell自動退出。

2、乙個shell中的系統環境變數才會被複製到子shell中(用export定義的變數);

3、乙個shell中的系統環境變數只對該shell或者它的子shell有效,該shell結束時變數消失(並不能返回到父shell中)。3、不用 export定義的變數只對該shell有效,對子shell也是無效的。

直接執行乙個指令碼檔案是在乙個子shell中執行的,而source則是在當前shell環境中執行的。

source可以讓指令碼影響它們的父shell環境,這和export去影響子shell環境相反.

Linux Shell 檔案執行方法

shell 檔案是以某種方式將一些命令放在一起得到的檔案,常稱為 shell 指令碼。shell 檔案通常以 bin sh 開始,後面指定直譯器,如下是乙個簡單的 shell 檔案的內容 bin sh echo hello,i am shell script 假定此檔名為 gg.sh,增加可執行許可...

linux shell 執行命令順序

在linux shell 中輸入乙個命令,如果有多個同名指令,shell需要按照一定規則去取優先順序高的乙個執行,shell命令的搜尋順序為 1 別名,使用alias建立的命令。2 關鍵字,如if,for。3 函式 4 內建命令,如cd,pwd等 5 外部命令,在path路徑中尋找 builtin ...

Sublime Text 3如何編譯執行c 程式

去了一趟清北學堂感覺自己玩的特別嗨,演算法沒學到什麼,前端和爬蟲的知識到是會了不少。然後知道了有乙個叫做sublime text 3的編輯器,好用不好用不知道,就衝著它好看,就決定以後就用它了。然後麻煩的事就出來了,只能編輯不能編譯有什麼用啊,控制台命令又太麻煩,那我還不如dev cpp去了。然後上...