Почему задано значение $ 0 для -bash?

7

Первое имя процесса входа в систему, похоже, установлено на -bash , но если я подошел к нему, он становится bash . например:

[email protected]:~# echo $0
-bash
[email protected]:~# bash
[email protected]:~# echo $0
bash

-bash приводит к сбою некоторых сценариев, например . /usr/share/debconf/confmodule

exec /usr/share/debconf/frontend -bash
Can't exec "-bash": No such file or directory at /usr/share/perl/5.14/IPC/Open3.pm line 186.
open2: exec of -bash failed at /usr/share/perl5/Debconf/ConfModule.pm line 59

Кто-нибудь знает причину, по которой $0 установлено на -bash ?

    
задан James Shimer 30.10.2013 в 14:06
источник

1 ответ

4

Если выход команды echo $0 равен -bash , это означает, что bash было вызвано как оболочка входа. man bash говорит где-то в строке 126:

%pr_e%

Подробнее см. здесь: Разница между командной оболочкой входа и Non -Login Shell .

Итак, ваша оболочка по-прежнему /bin/bash (это можно проверить с помощью команды echo $SHELL ), и я предлагаю вам использовать эту команду, которая даст вам ошибку, как обычно:

A  login shell is one whose first character of argument zero is a -, or 
one started with the --login option.
    
ответ дан Radu Rădeanu 30.10.2013 в 16:08
источник