Почему $0 установлен на -bash?
Похоже, имя первого процесса входа в систему установлено на -bash
, но если я недоразвита, то это становится bash
, например:
root@nowere:~# echo $0
-bash
root@nowere:~# bash
root@nowere:~# 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
?
1 ответ
Решение
Если на выходе echo $0
команда -bash
это означает, что bash
был вызван в качестве оболочки входа в систему. man bash
говорит где-то в строке 126:
A login shell is one whose first character of argument zero is a -, or one started with the --login option.
Подробнее об этом здесь: Разница между Оболочкой входа в систему и Оболочкой без регистрации.
Так что ваша оболочка все еще /bin/bash
(это можно проверить с помощью echo $SHELL
команда), и я предлагаю вам использовать эту команду, которая, как обычно, выдает ошибку:
exec /usr/share/debconf/frontend bash