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

Ever wondered what's the difference between~/.bashrc,~/.bash_profile,~/.profile,/etc/profile,/etc/bash.bashrc (and maybe others) and what their purposes are? I do.

Some interesting excerpts from the bash manpage:

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 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.

As far as I understand, alogin shell means a session where you log in to the system and directly end up in Bash, like a remote ssh session or logging in through a non-graphical text terminal. Anon-login shell is then the type of shells you open after logging in: typically in a graphical session when you open a new terminal window.

How I think things are supposed to work (for a typical setup):

  • .profile is for things that are not specifically related to Bash, like environment variablesPATH and friends, and should be available anytime. For example,.profile should also be loaded when starting a graphical desktop session.
  • .bashrc is for the configuring the interactive Bash usage, like Bash aliases, setting your favorite editor, setting the Bash prompt, etc.
  • .bash_profile is for making sure that both the things in.profile and.bashrc are loaded for login shells. For example,.bash_profile could be something simple like
    . ~/.profile
    . ~/.bashrc

    As stated in the man page excerpt above, if you would omit.bash_profile, only.profile would be loaded.

You might also be interested inthe page I put together with the most important stuff from my.bashrc,.profile and other files.

<come from http://stefaanlippens.net/bashrc_and_others>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值