Por que $ 0 é definido como -bash?

8

O primeiro nome do processo de login parece estar definido como -bash, mas se eu subcascar, ele se tornará bash. por exemplo:

root@nowere:~# echo $0
-bash
root@nowere:~# bash
root@nowere:~# echo $0
bash

-bash está causando a falha de alguns scripts, como . /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

Alguém sabe o motivo pelo qual $0está definido -bash?

James Shimer
fonte
1
@ RaduRădeanu Uso inútil de gato descoberto!
gniourf_gniourf

Respostas:

5

Se a saída do echo $0comando for, -bashisso significa que bashfoi chamado como um shell de login. man bashdiz em algum lugar na linha 126:

A  login shell is one whose first character of argument zero is a -, or 
one started with the --login option.

Veja mais sobre aqui: Diferença entre o Shell de Login e o Shell Não-Login .

Portanto, seu shell ainda está parado /bin/bash(isso pode ser verificado com o echo $SHELLcomando) e eu sugiro que você use esse comando que gera erros normalmente:

exec /usr/share/debconf/frontend bash
Radu Rădeanu
fonte
Obrigado, parece que o login está adicionando corretamente o "-" ao nome do processo do shell de login. Isso responde à minha pergunta.
James Shimer