bash shell具体可以分为3种类型,这3种类型为:

1 login shell

就是需要输入用户名和密码才能登陆的shell

2 可交互的非login shell

就是不用登陆的,但是可以同用户进行交互的shell,比如在父shell当中执行bash命令产生的子shell就是一个可交互的非login shell

3 不可交互的非login shell

这类shell通常都是系统自己使用

对于第三类不可交互的非login shell,如果想要让shell启动之前读取相应配置文件,可以通过设置BASH_ENV环境变量来实现。当把要执行的配置文件赋给这个变量时,那么不可交互的非login shell就可以通过BASH_ENV的值来执行相关的配置文件

对于第一类的login shell和第二类可交互的非login shell,涉及到的配置文件分别位于/etc和$HOME目录下,如下图所示:

/etc目录下面包含profile,bashrc文件和profile.d目录(其中包含各种自顶一个的.sh文件);

$HOME目录下包含.bash_profile|.bash_login|.profile(shell的搜索顺序按照这个顺序进行,找到一个就不会在找下一个。如果想知道自己的shell到底使用哪个配置文件,也可以通过man bash查看)和.bashrc。

当logins shell执行时,配置文件读取额流程如下图所示:

login shell首先读取/etc/profile文件,/etc/profile会调用执行/etc/profile.d目录下的.sh文件,然后shell读取$HOME目录下的.bash_profile|.bash_login|.profile,然后.bash_profile|.bash_login|.profile会调用.bashrc,.bashrc会调用/etc/bashrc,/etc/bashrc会调用执行/etc/profile.d目录下的.sh文件

当可交互的非login shell执行时,配置文件的读取流程如下图所示:

可交互的非login shell首先读取.bashrc,同上面一样,.bashrc调用/etc/bashrc,/etc/bashrc调用执行/etc/profile.d目录下面的.sh文件。

shell启动时读取的配置文件的更多相关文章

  1. bash启动时加载配置文件过程

    本文目录: 1.1 判断是否交互式.是否登录式 1.2 几种常见的bash启动方式 1.3 加载bash环境配置文件 当用户登录系统时,会加载各种bash配置文件,还会设置或清空一系列变量,有时还会执 ...

  2. SpringBoot——项目启动时读取配置及初始化资源

    介绍   在开发过程中,我们有时候会遇到非接口调用而出发程序执行任务的一些场景,比如我们使用quartz定时框架通过配置文件来启动定时任务时,或者一些初始化资源场景等触发的任务执行场景. 方法一:注解 ...

  3. Spark Shell启动时遇到<console>:14: error: not found: value spark import spark.implicits._ <console>:14: error: not found: value spark import spark.sql错误的解决办法(图文详解)

    不多说,直接上干货! 最近,开始,进一步学习spark的最新版本.由原来经常使用的spark-1.6.1,现在来使用spark-2.2.0-bin-hadoop2.6.tgz. 前期博客 Spark ...

  4. tomcat启动时加载配置文件 报错

    原因:  @serice("customerService")  和@Repository(value="customerDao")       解决: 直接@ ...

  5. shell 启动脚本

    启动脚本是bash启动时自动执行的脚本.用户可以把一些环境变量的设置和alias.umask设置放在启动脚本中,这样每次启动Shell时这些设置都自动生效.思考一下,bash在执行启动脚本时是以for ...

  6. 微服务架构 | *2.3 Spring Cloud 启动及加载配置文件源码分析(以 Nacos 为例)

    目录 前言 1. Spring Cloud 什么时候加载配置文件 2. 准备 Environment 配置环境 2.1 配置 Environment 环境 SpringApplication.prep ...

  7. 编译安装或者mysql启动时遇到的错误小记

    编译安装遇到的错误:进入mysql目录 [root@localhost software]# cd mysql-5.6.19 [root@localhost mysql-5.5.11]# cmake ...

  8. MySQL指定mysqld启动时所加载的配置文件

    mysqld.exe --init-file=file_name 以下为配置文件参数优化和中文详解: [client]port = 3306socket = /tmp/mysql.sock [mysq ...

  9. 监听tomcat服务器启动/关闭并从配置文件中读取参数进行初始化

    监听tomcat服务器启动/关闭很简单(2步): 1. 建立一个类实现ServletContextListener接口,重写其中的方法(contextDestroyed和contextInitiali ...

随机推荐

  1. Convert.ToInt32()和int.Parse()的区别

    (1)Convert.ToInt32(null)会返回0而不会报异常,但int.Parse(null)则会产生异常 (2)Convert.ToInt32("")和int.Parse ...

  2. Git / Bower Errors: Exit Code # 128 & Failed connect

    今天第一次使用bower来安装插件,上来就报了这个错. 然后在google上查找,很多人都有做出回答,让执行如下 git config --global url.https://github.com/ ...

  3. HTML5 video 事件

    1.获取视频时间长度 当视频载入video后,使用 onloadedmetadata 事件获取视频的时间长度. video.onloadedmetadata = function () { var v ...

  4. C语言--位运算符

    一.位运算符 1.按位与:& 1> 功能 * 只有对应的两个二进制位为1时,结果位才为1,否则为0 * 举例:10用二进制表示为1010,  7用二进制表示为0111.对两个数值进行&a ...

  5. uva1368 DNA Consensus String

    <tex2html_verbatim_mark> Figure 1. DNA (Deoxyribonucleic Acid) is the molecule which contains ...

  6. MHA环境搭建【4】manager相关依赖的解决

    mha的manager 结点依赖与mha-node软件包.所以在安装mha-manager之前要把mha-node安装上去:再者mha-manger还依赖于perl-Config-Tiny perl- ...

  7. soapUI参数中文乱码问题解决方法 (groovy脚本中文乱码)

    soapUI参数中文乱码问题解决方法 可能方案1: 字体不支持中文,将字体修改即可: file-preferences-editor settings-select font 修改字体,改成能显示中文 ...

  8. linq学习三个实例

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. LeetCode_Sum Root to Leaf Numbers

    Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number ...

  10. Check iO:初学Python

    The end of other For language training our Robots want to learn about suffixes. In this task, you ar ...