2013-06-29 23 views
2

爲什麼〜/ .bashrc中的$ 0的值是bash

echo "`pwd`/$0 loaded" 

我預計/home/thinker3/.bashrc加載 但結果:

[email protected]:~$ source .bashrc 
/home/thinker3/bash loaded 

我的問題解決了,感謝邁克爾·霍夫曼,我加

echo $BASH_SOURCE loaded 

以〜/ .bashrc和/ etc/profile,然後:

/home/thinker3/.bashrc loaded 
[email protected]:~/addons$ su - root 
Password: 
/etc/profile loaded 
[email protected]:~# 
+3

〜/ .bashrc不會被執行,而是來源。這意味着,進程保持不變('bash'),並且不會創建新進程('/ home/myname/.bashrc')。 – Uroc327

回答

3

由於Uroc327指出,.bashrc源於此,因此$0只是被調用進程的名稱(可能爲bash,就好像您從命令行回顯$0一樣)。當加載.bashrc時,$BASH_SOURCE的值將包含文件的位置。

+0

$ BASH_SOURCE很有幫助 – metaphy

0

這是bash。這可以說

echo "$0" 
.bashrc

,並開始一個新的bash shell容易測試。

這樣做的原因是,$0是正在運行二進制,這是不.bashrcbash的名稱(通常解決/bin/bash由於$PATH的值)。