Wydaje się, że nazwa pierwszego procesu logowania jest ustawiona na -bash
, ale jeśli podpiszę, stanie się bash
. na przykład:
root@nowere:~# echo $0
-bash
root@nowere:~# bash
root@nowere:~# echo $0
bash
-bash
powoduje awarię niektórych skryptów, takich jak . /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
Czy ktoś wie, dlaczego $0
tak się dzieje -bash
?
command-line
bash
scripts
debconf
James Shimer
źródło
źródło
Odpowiedzi:
Jeśli wynikiem
echo $0
polecenia jest-bash
, oznacza to, żebash
został wywołany jako powłoka logowania.man bash
mówi gdzieś w linii 126:Zobacz więcej o tutaj: Różnica między Powłoką logowania a Powłoką niezalogowaną .
Więc twoja powłoka jest nadal
/bin/bash
(można to sprawdzić za pomocąecho $SHELL
komendy) i sugeruję, abyś używał tej komendy, która daje błąd jak zwykle:źródło