Por que $ 0 está definido como -bash?

7

O nome do primeiro processo de login parece estar definido como -bash , mas se eu subfornecer, 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 $0 está definido como -bash ?

    
por James Shimer 30.10.2013 / 15:06

1 resposta

4

Se a saída do comando echo $0 for -bash , isso significa que bash foi chamado como um shell de login. man bash diz algures na linha 126:

% bl0ck_qu0te%

Veja mais sobre aqui: Diferença entre o login shell e o non -Login Shell .

Portanto, o seu shell ainda é /bin/bash (isso pode ser verificado com o comando echo $SHELL ) e sugiro que você use esse comando que lhe dá erro normalmente:

exec /usr/share/debconf/frontend bash
    
por Radu Rădeanu 30.10.2013 / 17:08