shell子進(jìn)程修改父進(jìn)程的環(huán)境變量值
腳本中的環(huán)境變量通過 export 導(dǎo)出局蚀,腳本中調(diào)用其他腳本使用這個(gè)變量
這里有兩個(gè)腳本程序 hello 和 hello1
hello 腳本代碼
#!/bin/bash
FILM="Front of the class"
#export FILM 這里我注釋掉 export 命令
echo $FILM
./hello1 ##調(diào)用./hello1腳本,打印FILM忆矛,注意這里是 父與子 進(jìn)程的調(diào)用關(guān)系
hello1 腳本程序
#!/bin/bash
echo "$FILM in hello1" 打印FILM變量
如果我們注釋掉export 輸出變量靠柑,那么在 hello1 只是打印出 in hello1 凿歼,引文FILM 是空
打印輸出
#:~/yu/course/hello$ ./hello
Front of the class
in hello1
注意一點(diǎn):./hello1 父子進(jìn)程調(diào)用關(guān)系擦囊,hello1
是在 hello
開辟的子進(jìn)程中運(yùn)行
如果在子進(jìn)程中修改 FILM 的值塞茅,會(huì)不會(huì)在 父進(jìn)程中改變呢歼培?震蒋?
不會(huì),首先躲庄,通過./hello1 方式調(diào)用坯墨,是父子進(jìn)程的關(guān)系燥狰,export 是單向傳遞,從父進(jìn)程到子進(jìn)程,不能從子進(jìn)程到父進(jìn)程温兼。當(dāng)子進(jìn)程撤消后,變量值也就消失了,不會(huì)改變變量值
打印子進(jìn)程中修改過的變量值,使用 "." 點(diǎn)命令. ./hello1
這個(gè)方式調(diào)用
這種方式就可以使得 hello
和 hello1
在同一個(gè)進(jìn)程中了,變量可以傳值了在 hello 中修改為
#!/bin/bash
FILM="Front of the class"
export FILM
echo $FILM before hello
. ./hello1
echo $FILM after hello
#:~/yu/course/hello$ ./hello
Front of the class before hello
Front of the class in hello1 first
MODIFY in hello1 second
MODIFY after hello
#:~/yu/
songshu.png