shell指令碼中source和sh的區別

2022-07-13 16:57:11 字數 1111 閱讀 5305

在當前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...