Shell配置文件(脚本)的加载
发布时间:2020-12-14 02:15:58 所属栏目:Linux 来源:网络整理
导读:无论是否是交互式,是否是登录式,Bash Shell 在启动时总要配置其运行环境,例如初始化环境变量、设置命令提示符、指定系统命令路径等。这个过程是通过加载一系列配置文件完成的,这些配置文件其实就是 Shell 脚本文件。 与 Bash Shell 有关的配置文件主要有?
无论是否是交互式,是否是登录式,Bash Shell 在启动时总要配置其运行环境,例如初始化环境变量、设置命令提示符、指定系统命令路径等。这个过程是通过加载一系列配置文件完成的,这些配置文件其实就是 Shell 脚本文件。 与 Bash Shell 有关的配置文件主要有?/etc/profile、~/.bash_profile、~/.bash_login、~/.profile、~/.bashrc、/etc/bashrc、/etc/profile.d/*.sh,不同的启动方式会加载不同的配置文件。
登录式的 ShellBash 官方文档说:如果是登录式的 Shell,首先会读取和执行?/etc/profiles,这是所有用户的全局配置文件,接着会到用户主目录中寻找 ~/.bash_profile、~/.bash_login 或者 ~/.profile,它们都是用户个人的配置文件。不同的 Linux 发行版附带的个人配置文件也不同,有的可能只有其中一个,有的可能三者都有,笔者使用的是 CentOS 7,该发行版只有?~/.bash_profile,其它两个都没有。 如果三个文件同时存在的话,到底应该加载哪一个呢?它们的优先级顺序是?~/.bash_profile > ~/.bash_login > ~/.profile。 如果 ~/.bash_profile 存在,那么一切以该文件为准,并且到此结束,不再加载其它的配置文件。 如果 ~/.bash_profile 不存在,那么尝试加载?~/.bash_login。~/.bash_login 存在的话就到此结束,不存在的话就加载?~/.profile。 注意,/etc/profiles 文件还会嵌套加载?/etc/profile.d/*.sh,请看下面的代码: for i in /etc/profile.d/*.sh ; do if [ -r "$i" ]; then if [ "${-#*i}" != "$-" ]; then . "$i" else . "$i" >/dev/null fi fi done 同样,~/.bash_profile 也使用类似的方式加载 ~/.bashrc: if [ -f ~/.bashrc ]; then . ~/.bashrc fi 非登录的 Shell如果以非登录的方式启动 Shell,那么就不会读取以上所说的配置文件,而是直接读取 ~/.bashrc。~/.bashrc 文件还会嵌套加载 /etc/bashrc,请看下面的代码: if [ -f /etc/bashrc ]; then . /etc/bashrc fi (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |