Dash (-) in front of bash
If I examine my bash shell in an OS X (10.6.4) terminal, such as by typing echo $0
, there is a dash in front of my shell, like this: -bash
. What does this dash mean?
Solution 1:
It means that bash
is invoked as a login shell.
man bash
says:
A login shell is one whose first character of argument zero is a
-
, or one started with the--login
option.When bash is invoked as an interactive login shell, or as a non-interactive shell with the
--login
option, it first reads and executes commands from the file/etc/profile
, if that file exists. After reading that file, it looks for~/.bash_profile
,~/.bash_login
, and~/.profile
, in that order, and reads and executes commands from the first one that exists and is readable. The--noprofile
option may be used when the shell is started to inhibit this behavior.When a login shell exits, bash reads and executes commands from the file
~/.bash_logout
, if it exists.
You'll find login -pf
in your ps
output, which starts a login shell by default.
Try running login -pf
and login -pfl
and see the difference. man login
describes the difference:
-l
Tells the program executed by login that this is not a login session (by convention, a login session is signalled to the program with a hyphen as the first character ofargv[0]
; this option disables that), and prevents it fromchdir(2)
ing to the user's home directory. The default is to add the hyphen (this is a login session).