我在/bin
已成立這樣的UNIX環境中工作訪問時忽略BASH_ENV:慶典似乎通過一個符號
-rwxr-xr-x 1 root root 617144 Nov 19 2009 bash
lrwxrwxrwx 1 root root 4 Nov 23 2010 sh -> bash
在我的環境我已經設置$BASH_ENV
指向我的地方。 bashrc中:
env | grep BASH
BASH_ENV=/home/users/atomicpirate/.bashrc
此外,.bashrc中具有作爲其第一行echo BASHRC READ
。
我希望/ bin/sh的和/斌/慶典的行爲與此設置完全一樣的...但他們不這樣做:
/bin/bash -c 'echo $BASH_ENV'
BASHRC READ
/home/users/atomicpirate/.bashrc
/bin/sh -c 'echo $BASH_ENV'
/home/users/atomicpirate/.bashrc
在第二種情況下,.bashrc中是不讀。任何想法爲什麼會這樣?看起來像符號鏈接正在打破$ BASH_ENV的預期行爲。
這是關於'$ ENV'的一個有趣的地方,我不知道'sh'有''bash'的'$ BASH_ENV'類似的環境變量。謝謝! – atomicpirate 2012-01-27 16:10:55
進一步研究一下,'sh'只使用'$ ENV'作爲交互式shell,而bash使用'$ BASH_ENV'作爲交互式和非交互式shell。所以,在上面的例子中,使用'$ ENV'不會改變結果。仍然很好意識到。 – atomicpirate 2012-01-27 16:49:05
感謝您指出這一點。我已經更新了答案。請注意,「sh」行爲隨着時間顯着變化。下面是FreeBSD sh手冊頁的摘錄:「與舊版本的sh不同,ENV腳本只是在調用交互式shell的時候才提供的,這關閉了一個衆所周知的,有時很容易被利用的安全漏洞,與安全性不高的ENV腳本相關。 – 2012-01-27 16:57:06