Почему $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
Другие вопросы по тегам