在當前shell下定義乙個變數
$var1='var1 defined in shell'
在指令碼中輸出上面定義的變數, 然後再定義乙個新的變數
$ cat << eof > script.sh
> echo \$var1
> var2="var var2 defined in the script.sh"
> eof
$ echo $var1
var2='var var2 defined in the script.sh'
$source script.sh
var1 defined in shell
指令碼執行完以後再輸出var2, 可以看到var2已經定義, 並且輸出.
$ echo $var2
$ var var2 defined in the script.sh
note:./script2.sh 也等同於這種方式.
# 首先在當前shell中定義乙個變數
$ var="va1 is defined"
$ cat << eof \> script2.sh
> if [ -z \$ ];then
> echo "var id not set"
> else
> echo "var is set to $var";
> fi
> var2="var2 defined in script.sh"
> eof
$ chmod +x script2.sh
[centos@localhost ~]$ sh script2.sh
var id not set
[centos@localhost ~]$ echo $var2
輸出為空, 當前shell不能使用./script2.sh中定義的變數, 指令碼中也不能使用shell中定義的變數.
note:source script.sh與. scirpt.sh等價. sh 通常是bash的軟鏈結, 所以也是等價的.
source命令在shell指令碼中執行不生效的原因
最近發現,把我原來編譯安裝mysql的命令寫到指令碼裡,然後執行,source命令執行總是不生效。查了下資料,算是知道了原因,在此記錄一下。使用bash 指令碼名方式來執行指令碼,這種方式會啟動乙個子shell,在子shell中執行指令碼裡面的語句,該子shell繼承父shell的環境變數,但是執行...
Shell中的exec和source解析
shell 中的exec 和source 解析 exec 和source 都屬於bash 內部命令,在講這兩個命令之前,前談一下 fork 的概念 fork 是linux 的系統呼叫,用來建立子程序 child process 子程序是父程序 parent process 的乙個副本,從父程序那裡獲...
shell指令碼執行的原理(source命令等)
shell英文意思是外殼,使用者可以通過shell和作業系統互動,通俗的講shell就是乙個直譯器,當我們輸入命令shell就解釋執行,shell有很多版本,我們一般使用的都是bash,在linux輸入一條命令可以檢視當前正在使用的shell echo shell 螢幕會出現 bin bashshe...