Why is $0 set to -bash?
First login process name seems to be set to -bash
, but if I subshell then it becomes bash
. for example:
root@nowere:~# echo $0
-bash
root@nowere:~# bash
root@nowere:~# echo $0
bash
-bash
is causing some scripts to fail, such as . /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
Anyone know the reason why $0
is set to -bash
?
If the output of echo $0
command is -bash
it means that bash
was invoked as a login shell. man bash
says somewhere at line 126:
A login shell is one whose first character of argument zero is a -, or one started with the --login option.
See more about here: Difference between Login Shell and Non-Login Shell.
So your shell is still /bin/bash
(this can be checked with echo $SHELL
command) and I suggest you to use that command which give you error as normally:
exec /usr/share/debconf/frontend bash