Почему $ 0 установлен на -bash?

8

Первое имя процесса входа в систему, кажется, установлен в -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
@ RaduRădeanu Бесполезное использование Cat обнаружено!
gniourf_gniourf

Ответы:

5

Если вывод 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
Раду Рэдяну
источник
Спасибо, похоже, что логин правильно добавляет "-" к имени процесса оболочки логина. Это отвечает на мой вопрос.
Джеймс Шимер