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. c#快捷键设置和text输入限制

    快捷键 使用KeyDonw事件 输入限制使用 KeyPress 事件 1.注意:如果是整个窗体的快捷键,一定要把窗体属性中的KeyPreview改为true private void textbox_ ...

  2. cocos2dx ——屏幕适配

    本文出自 “夏天的风” 博客,请务必保留此出处 http://shahdza.blog.51cto.com/2410787/1550089 手机的屏幕大小千差万别,如现在流行的安卓手机屏幕大部分长宽比 ...

  3. CC2530红外学习球学码函数(P1.2接红外一体接收头,使用定时器tim1的复用功能2)

    P1.2GPIO配置: void cap_gpio_init(){ P1SEL |= 0x04; P1DIR &= ~0x04; PERCFG |= 0x40; P2SEL |= 0x20; ...

  4. Here are some of my ideas .

    1:Learning english is very important ,its the very useful for my major studying and my future develo ...

  5. [android]-如何在向服务器发送request时附加已保存的cookie数据

    [android]-如何在向服务器发送request时附加已保存的cookie数据 应用场景:在开发android基于手机端+服务器端的应用时,登陆->获取用户信息->获取授权用户相关业务 ...

  6. unix c 04

      系统调用(System Call)   文件的操作函数(Unix/Liunx系统内部提供的函数)   time 可以查看程序的运行时间,包括用户层时间和系统层的时间.   系统调用其实就是一系列的 ...

  7. ACM1174_爆头解题思路_空间三维坐标求点到直线的距离

    /* 爆头 Description gameboy是一个CS高手,他最喜欢的就是扮演警察, 手持M4爆土匪的头.也许这里有人没玩过CS,有必 要介绍一下“爆头”这个术语:所谓爆头,就是子 弹直接命中对 ...

  8. Find the largest multiple of 3 解答

    Question Given an array of non-negative integers. Find the largest multiple of 3 that can be formed ...

  9. 编程内功修炼之数据结构—BTree(一)

    BTree,和二叉查找树和红黑树中一样,与关键字相联系的数据作为关键字存放在同一节点上. 一颗BTree树具有如下的特性:(根为root[T]) 1)每个节点x有以下域: (a)n[x],当前存储在节 ...

  10. URL重写是实现PHP伪静态

    URL重写是实现PHP伪静态 应该这样说才是,URL重写是实现PHP伪静态的方式之一, 具体如: http://www.plframe.com/?x=1&y=2&z=3 换成 http ...