Why isn't .profile sourced when opening a terminal?
Just installed Ubuntu 14.04.1 LTS.
According to .profile,
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash, if ~/.bash_profile or ~/.bash_login exists.
There is no ~/.bash_profile or ~/.bash_login.
It does not seem to source .profile when opening a terminal.
- Why doesn't it source .profile when opening a terminal?
- Why is .profile there if it is not sourced?
- How do I know/control what is sourced when a new terminal is opened?
- When a new terminal is opened, does it do a "login"?
- Where is a good place to add $HOME/bin to my path? .bashrc? Will that cause a problem because .profile has the same code?
Solution 1:
- Because terminals don't usually run login shells by default. They also usually have options to run login shells, which do source
.profile
. - To control the behaviour of login shells.
- Depends on the shell. For
bash
, see the set of startup files. - Not in some sense (updating login records, for example).
- If you have a folder called
bin
in$HOME
, the default.profile
for Ubuntu does add it to yourPATH
. Since.profile
is sourced at login (even with a GUI login), it should be part of yourPATH
for non-login shells started after a re-login. It isn't wrong if a directory appears twice inPATH
, see this U&L question for details.
Solution 2:
I found I had to edit the Default profile. In the terminal, click Preferences > Profiles > Edit > Command > Run command as login shell
Afterwards new terminals would source .profile script.