2

为什么~/.bashrc中 $0 的值是bash

echo "`pwd`/$0 loaded"

我预计/home/thinker3/.bashrc 已加载 ,但结果:

thinker3@ubuntu:~$ source .bashrc
/home/thinker3/bash loaded

我的问题得到了解决,感谢迈克尔霍夫曼,我补充说

echo $BASH_SOURCE loaded

到 ~/.bashrc 和 /etc/profile,然后:

/home/thinker3/.bashrc loaded
thinker3@ubuntu:~/addons$ su - root
Password: 
/etc/profile loaded
root@ubuntu:~# 
4

2 回答 2

3

正如 Uroc327 指出的那样,.bashrcis sourced 所以$0只是被调用进程的名称(可能bash,就像您$0从命令行回显一样)。加载时.bashrc, 的值$BASH_SOURCE将包含文件的位置。

于 2013-06-29T14:31:58.683 回答
0

bash。这可以很容易地通过说

echo "$0"

在你的.bashrc并开始一个新的 bash shell。

原因在于$0,这是正在运行的二进制文件的名称,它不是.bashrcbut bash(通常由于 的值而解析为)。/bin/bash$PATH

于 2013-06-29T14:29:09.560 回答