¿Por qué $ 0 se establece en -bash?

8

El nombre del primer proceso de inicio de sesión parece estar configurado en -bash, pero si subshell, se convierte en bash. por ejemplo:

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

-bash está causando que algunas secuencias de comandos fallen, 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

Alguien sabe la razón por la que $0está configurado -bash?

James Shimer
fuente
1
@ RaduRădeanu ¡Uso inútil del gato visto!
gniourf_gniourf

Respuestas:

5

Si la salida del echo $0comando es -bash, significa que bashse invocó como un shell de inicio de sesión. man bashdice en algún lugar en la línea 126:

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

Vea más sobre aquí: Diferencia entre Shell de inicio de sesión y Shell sin inicio de sesión .

Entonces su shell aún está /bin/bash(esto se puede verificar con el echo $SHELLcomando) y le sugiero que use ese comando que le da el error normalmente:

exec /usr/share/debconf/frontend bash
Radu Rădeanu
fuente
Gracias, parece que el inicio de sesión está agregando correctamente el "-" al nombre del proceso del shell de inicio de sesión. Eso responde mi pregunta.
James Shimer