2013-06-29 6 views
2

Почему значение $ 0 в ~/.bashrc is 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 и начать новую Баш оболочку.

Причиной этого является то, что $0 это имя двоичного файла, которая запускается, которая не является .bashrc но bash (обычно разрешение к /bin/bash из-за стоимости $PATH).

Смежные вопросы