I typed the command echo $0 in tty1, and it returned -bash, why not bash?


It indicates that bash was started as a login shell. From man bash, section INVOCATION (emphasis mine):

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-inter‐
active  shell with the --login option, it first reads and executes com‐
mands 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.

$0, of course, is argument zero.

In Ubuntu, typically .profile exists and .bash_profile and .bash_login don't. So, a login shell reads .profile.

See also:

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.