Perché $ 0 è impostato su -bash?


8

Il primo nome del processo di accesso sembra essere impostato su -bash, ma se si esegue la subshell lo diventa bash. per esempio:

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

-bash sta causando il fallimento di alcuni script, come . /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

Qualcuno sa il motivo per cui $0è impostato -bash?


1
@ RaduRădeanu Uso inutile del gatto notato!
gniourf_gniourf,

Risposte:


5

Se l'output del echo $0comando è -bashsignifica che è bashstato invocato come shell di login. man bashdice da qualche parte alla linea 126:

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

Scopri di più qui: Differenza tra Shell di accesso e Shell non di accesso .

Quindi la tua shell è ancora /bin/bash(questo può essere verificato con il echo $SHELLcomando) e ti suggerisco di usare quel comando che ti dà l'errore normalmente:

exec /usr/share/debconf/frontend bash

Grazie, sembra che il login stia aggiungendo correttamente il "-" al nome del processo della shell di login. Questo risponde alla mia domanda.
James Shimer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.