如何執行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去了。然後上...