LINUX配置文件加载顺序

  • shell启动方式
    • 启动类型
    • 如何判断是否为交互式 Shell? 有两种方式
    • 判断是否为登录式 Shell ?
    • 同时判断交互式和登录式
  • 配置文件启动
    • 配置文件加载说明
  • 启动顺序
    • login shell 启动顺序
      • 命令行与SSH登录
      • 图形界面登录
    • no-login shell 启动顺序
  • 如图

shell启动方式

启动类型

  • 交互式登录
    一个个地输入命令并及时查看它们的输出结果,整个过程都在跟 Shell 不停地互动。
  • 交互式非登录
    运行一个 Shell 脚本 文件,让所有命令批量化、一次性地执行。
  • 非交互式登录
    需要输入用户名和密码才能使用。
  • 非交互式非登录
    直接可以使用。

如何判断是否为交互式 Shell? 有两种方式

1、 查看特殊变量 - ,如果值包含 i,则是交互式,否则是非交互式

 $ echo $-

2、 查看变量 PS1 是否为空,如果不为空,则是交互式,否则为非交互式

$ echo $PS1

判断是否为登录式 Shell ?

取得 bash 是需要完整的登入流程,就称为 login shell,取得 bash 接口的方法不需要重复登入的操作就称为non-login shell。
执行命令

shopt login_shell

如果值为 on 表示登录式(login shell),为 off 表示非登录式(non-login shell)。

同时判断交互式和登录式

$ echo $PS1; shopt login_shell

配置文件启动

配置文件加载说明

对于登录式和非登录式,配置文件的加载顺序是不一样的。
与 Bash Shell 有关的配置文件主要有以下几种,不同的启动方式会加载不同的配置文件。

1: /etc/profile           #对所有用户的登录shell都有效(全局配置文件),最好不要修改这个文件
2: ~/.bash_profile        #为当前用户设置环境信息,仅对当前用户的登录shell有效(局部配置文件)
3: ~/.bash_login
4: ~/.profile
5: ~/.bashrc             #bash_profile只被登录shell读取并执行一次,#如果在命令行上键入bash启动一个新的shell,这个新shell读取的是.bashrc而不是.bash_profile,#将登录shell和运行一个子shell所需的配置文件分开可以获取非常灵活的配置策略,从而满足不同的场景。
6: /etc/bashrc
7: /etc/profile.d/*.sh
8: .bash_history         #操作bash的历史记录
9: /etc/bashrc           #和.bashrc的含义一样,只不过适用于所有的用户

启动顺序

login shell 启动顺序

/ect/profile 文件是系统默认的主启动文件,系统上每个用户登录时都会执行。
/etc/profile 文件有如下一段代码:

# 样例
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; doif [ -r "$i" ]; thenif [ "${-#*i}" != "$-" ]; then. "$i"else. "$i" >/dev/nullfifi
done

遍历 /etc/profile.d 目录下所有以 .sh 结尾的文件和 sh.local 文件。判断它们是否可读([ -r "i"]),如果可读,判断当前Shell启动方式是不是交互式(i"]),如果可读,判断当前 Shell启动方式是不是交互式(i"]),如果可读,判断当前Shell启动方式是不是交互式(- 中包含 i)的,如果是交互式的,在当前 Shell 进程中执行该脚本(. “i",source"i",source "i",source"i” 的简写, Shell 的模块化方式),否则,也在当前 Shell 进程中执行该脚本,只不过将输出重定向到了 /dev/null 中。
${-#*i} 这个表达式的意思是:从左向右,在 - 变量中找到第一个 i ,并截取 i 之后的子串。

命令行与SSH登录

命令行登录和ssh登录,shell会按照以下顺序,运行第一个被找到的文件,余下的会被忽略:

/ect/profile
~/.bash_profile
~/.bash_login
~/.profile
# 一般没有 ~/.bashrc ,因为该文件一般通过其他文件运行。

不同的 Linux 发行版附带的个人配置文件也不同,有的可能只有其中一个,有的可能三者都有。如果三个文件同时存在的话,它们的优先级顺序是:

~/.bash_profile > ~/.bash_login > ~/.profile

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

图形界面登录

只加载如下两个其他的会被忽略:

/ect/profile
~/.profile

no-login shell 启动顺序

图形界面打开的shell,只会读入~/.bashrc 文件,不会检查 /etc/.profile 等其他登录shell文件。

~/.bashrc

如图

LINUX配置文件加载顺序相关推荐

  1. Spring Boot默认配置文件加载顺序(四)

    通常情况下,Spring Boot 在启动时会将 resources 目录下的 application.properties 或 apllication.yml 作为其默认配置文件,我们可以在该配置文 ...

  2. Spring Boot配置文件加载顺序

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.通过spring.config.location改变配置文件的位置 二.外部配置加载顺序 1.使用命令行参数指定加 ...

  3. SpringBoot的配置文件加载顺序和使用方式

    1.bootstrap.properties bootstrap.properties 配置文件是由"根"上下文优先加载,程序启动之初就感知 如:Spring Cloud Conf ...

  4. springboot配置文件加载顺序_「SpringBoot系列」配置文件加载优先级解析

    SpringBoot提供了外部分配置功能,可以使用属性文件(properties).YAML(yml)文件.环境变量和命令行参数来进行处部参数配置,并t以特定的顺序来处理配置,以便于允许合理的覆盖值. ...

  5. [Log4j] Log4j 的配置和配置文件加载顺序

    需求:  把log4j.properties 配置问题放置到工程外面的指定文件夹.  具体原因参考http://blog.csdn.net/lihe2008125/article/details/77 ...

  6. Spring Boot 配置文件加载顺序

    1.介绍 依次为: bootstrap.properties -> bootstrap.yml -> application.properties -> application.ym ...

  7. SpringBoot profile及其配置文件加载顺序

    1.多Profile文件 Profile是Spring对不同环境提供不同配置功能的支持,可以通过激活.默认使用application.properties的配置: 指定参数等方式快速切换环境 多pro ...

  8. mysql获取配置文件信息,四种获取MySQL数据库配置文件加载顺序

    简介 有时候帮人排查一下MySQL数据库问题的时候,用ps -ef查看MySQL数据库进程的时候,竟然不显示配置的相关信息. 如果想看MySQL数据库的配置,就会一头雾水,于是就特地整理了一下,4种查 ...

  9. springboot 配置文件加载顺序 与boboootStrap属性文件对比

    spring boot 启动时 会扫描 以下位置的 application.properties 或者 yml 作为默认配置文件 file:./config/ file:./ classpath:/c ...

最新文章

  1. 怎么用php操作mysql删除数据库代码_如何使用php操作mysql的增删改查?
  2. oralce 数据库监听日志状态及目录:查看监听(使用grid用户登陆):
  3. matplotlib 笔记:设置x轴 y轴文字
  4. php session 回收,关于php session gc回收的问题
  5. wxpython制作表格界面_wxpython入门第二步(布局)
  6. java垃圾回收菜鸟_java垃圾回收机制
  7. 学习yield《转》
  8. python发布代码图片_gitpython模块与代码发布项目流程图
  9. 蚂蚁区块链第19课 联盟链创建及管理
  10. 土地利用转移矩阵--更新中
  11. CNN | 01实现颜色分类
  12. 中科院计算所是怎样的存在?院校详情大盘点!
  13. H5页面视觉效果设计技巧有哪些
  14. 更多免费资源解压密码_更多免费(几乎免费)法律图片资源
  15. Apache Hadoop大数据集群及相关生态组件安装
  16. 云计算基础(二)—— 虚拟化
  17. 微软平台程序员的悲哀
  18. can和could的用法_情态动词can和could用法详解
  19. 分到用时方恨少--CSDN赚积分办法
  20. 剑指Offer(1)——第一章面试的流程

热门文章

  1. <Linux开发> ubuntu开发工具-Ubuntu测试网速及实时网速图
  2. video 满屏显示_HTML5 video播放器全屏(fullScreen)方法实例
  3. 解决页面怎么模拟手机端屏幕
  4. 在使用vue脚手架之前你必须掌握的:vue的模版以及路由用法
  5. 部署Elixir项目
  6. 王祥林 计算机专业英语答案,计算机专业英语 第3版 配套习题 作者 王祥林 陈静姣 模拟试题1.doc...
  7. 工资条: OneEmailInfo部分
  8. css手机端长摁背景变色,css动画,如何实现点击/长按时背景色切换的动画效果(背景从中间向两边延展)...
  9. QGC编译报错error C2220: 警告被视为错误 最佳解决方法
  10. “独角兽”深度研究报告:中国的“独角兽”为何这么牛?