Sunday, December 7, 2008

Bash: about .bashrc, .bash_profile, .profile, /etc/profile, etc/bash.bashrc

The difference between ~/.bashrc, ~/.bash_profile, ~/.profile, /etc/profile, /etc/bash.bashrc, and ~/.bash_logout:
[1] 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. Basically, ~/.bashrc allows you to create shortcuts (aliases) and interactive programs (functions) that run on the startup of the bash shell or that are used when running an interactive shell.

[2] When an interactive shell that is not a login shell is started, bash reads and executes commands from /etc/bash.bashrc and ~/.bashrc, if these files exist. This may be inhibited by using the --norc option. The --rcfile file option will force bash to read and execute commands from file instead of /etc/bash.bashrc and ~/.bashrc.

[3] When bash exits the file called .bash_logout in the user's home directory is run.

Reference:
[1] http://telin.ugent.be/~slippens/drupal/bashrc_and_others
[2] http://www.comptechdoc.org/os/linux/howlinuxworks/linux_hlbash.html

No comments: