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