Shell配置文件

无论是否是交互式, 是否是登陆式, Bash Shell在启动时总要配置其运行环境, 例如初始化环境变量, 设置命令提示符, 指定系统命令路径等. 这个过程是通过加载一系列配置文件完成的, 这些配置文件其实就是Shell脚本文件.

不同的启动方式会加载不同的配置文件.

登陆式的Shell

如果是登陆式的Shell, 首先会读取和执行/etc/profile, 这是所有用户的全局配置文件, 接着会到用户主目录中寻找~/.bash_profile, ~/.bash_login, ~/.profile, 它们都是用户的个人配置文件.

不同的Linux发行版附带的个人配置文件也不同, 有的可能只有其中一个, 有的可能三者都有.

如果三个文件同时存在的话, 到底应该加载哪一个呢? 它们的优先级顺序是: ~/.bash_profile > ~/.bash_longin > ~/.profile.

如果~/.bash_profile存在, 那么一切以该文件为准, 并且到此结束, 不再加载其它的配置文件. 如果~/.bash_profile不存在, 那么尝试加载~/.bash_login. 如果~/.bash_login存在的花就到此结束, 不存在的话就加载~/.profile.

非登陆式的Shell

如果以非登陆的方式启动Shell, 那么就不会读取以上所说的配置文件, 而是直接读取~/.bashrc.

注解

当登陆系统时, 不管是哪个用户, 都会先去读取和执行/etc/profile, 这是所有用户的全局配置文件;

然后根据登陆的用户,读取~/.profile, 这是在用户登陆时读取的用户的个性配置文件;

当登陆系统之后, 启动一个Bash Shell时, 会读取~/.bashrc, 这是非登陆式启动Shell时读取的配置文件.

编写自己的Shell配置文件

对于普通用户来说, 也许~/.bashrc才是最重要的文件, 因为不管是否登陆都会加载该文件.

我们可以将自己的一些代码添加到~/.bashrc, 这样每次启动Shell都可以个性化配置. 也可以将自己编写的代码放到一个新文件中(假设叫myconf.sh), 只要在~/.bashrc中使用类似. ./myconf.sh的形式将新文件引入进来就可以了.

注解

我们修改Shell配置时, 如果修改的是全局配置, 即对所有用户都有效, 则在/etc/profile中修改.

如果只是某个用户的个性化修改, 可以在~/.profile~/.bashrc中修改; ~/.profile是每次在用户登陆读取, ~/.bashrc是每次非登陆式启动Bash Shell时生效.

当然, /etc/profile, ~/.profile~/.bashrc都可以在修改后通过source.手动导入.

实例: 给PATH变量增加新的路径

当用户登陆Shell时, PATH变量会在/etc/profile文件中设置, 然后在~/.bash_profile也会增加几个目录. 如果没有登陆Shell, PATH变量会在/etc/bashrc 文件中设置.

如果我们想增加自己的路径, 可以将该路径放在~/.bashrc文件中, 例如:

PATH=$PATH:$HOME/addon