自定變數與環境變數 - Linux

By Tracy
at 2013-12-22T20:40
at 2013-12-22T20:40
Table of Contents
我的理解是這樣:
shell的指令有些會fork出子進程來實行 有些就在本shell實行
會fork的:
- 外部程式
- 用&實行的shell指令
不會fork的:
- "正常的" shell指令
我把你寫的兩行叫做例1. 例1是不會fork的一型
對於會fork的那些, 才有環境變數有沒有經過export的區別
例2: 子進程可以看到經export的變數
$ export a=1
$ bash -c 'echo $a'
=> 1
例3: 子進程看不到未經export的變數
$ b=1
$ bash -c 'echo $b'
=> (空白)
※ 引述《gn00618777 (非常念舊)》之銘言:
: Linux之神的鳥哥,在基本第十一章介紹自定變數與環境變數的差別是一個不能
: 給子程式使用,另一個可以,而且他說明"在一個Bash底下的任何指令"都是新
: 的子程式",照他這麼說我感覺怪怪的。
: your_path=~/test //自定變數路徑
: cd ${your_path} //可以切換目錄到test
: 既然第二個指令是子程式(新的shell),那他應該看不到這your_path變數阿
: 第一行的指令應該要export your_path=~/test變成環境變數才對阿!?可是上面
: 指令卻行得通...為何?是我理解錯誤?這也與我前幾小時問的makefile問題相關..
: 謝謝前輩。
--
祖祖 拎北不做人啦!
--
shell的指令有些會fork出子進程來實行 有些就在本shell實行
會fork的:
- 外部程式
- 用&實行的shell指令
不會fork的:
- "正常的" shell指令
我把你寫的兩行叫做例1. 例1是不會fork的一型
對於會fork的那些, 才有環境變數有沒有經過export的區別
例2: 子進程可以看到經export的變數
$ export a=1
$ bash -c 'echo $a'
=> 1
例3: 子進程看不到未經export的變數
$ b=1
$ bash -c 'echo $b'
=> (空白)
※ 引述《gn00618777 (非常念舊)》之銘言:
: Linux之神的鳥哥,在基本第十一章介紹自定變數與環境變數的差別是一個不能
: 給子程式使用,另一個可以,而且他說明"在一個Bash底下的任何指令"都是新
: 的子程式",照他這麼說我感覺怪怪的。
: your_path=~/test //自定變數路徑
: cd ${your_path} //可以切換目錄到test
: 既然第二個指令是子程式(新的shell),那他應該看不到這your_path變數阿
: 第一行的指令應該要export your_path=~/test變成環境變數才對阿!?可是上面
: 指令卻行得通...為何?是我理解錯誤?這也與我前幾小時問的makefile問題相關..
: 謝謝前輩。
--
祖祖 拎北不做人啦!
--
Tags:
Linux
All Comments
Related Posts
關於makefile..

By Lydia
at 2013-12-22T10:27
at 2013-12-22T10:27
製作開機光碟

By Emma
at 2013-12-21T18:38
at 2013-12-21T18:38
非 root 可以改解析度嗎 ?

By Hardy
at 2013-12-21T14:40
at 2013-12-21T14:40
Ubuntu編譯核心後無法開機

By Adele
at 2013-12-20T15:43
at 2013-12-20T15:43
VMware無法重新啟動或關機

By Oscar
at 2013-12-20T01:31
at 2013-12-20T01:31