启动bash shell的三种方式

1、登录时当做默认登录shell

2、作为非登录shell的交互式shell

3、作为运行脚本的非交互shell

一、登录shell

登录Linux系统时,bash shell会作为登录shell启动,登录shell会从4个不同的启动文件里读取命令,下面是bash shell处理这些文件的次序:

1./etc/profile

2.$HOME/.bash_profile

3.$HOME/.bash_login

4.$HOME/.profile

其中/etc/profile文件是系统默认的bash shell的主启动文件,系统上的每个用户登录时都会执行这个启动文件,另外三个启动文件是用户专有的。例如,每个用户可以配置自己专属的jdk和tomcat等。

1)、/etc/profile

  profile文件有一个复杂的特性,有个for语句,会逐一访问/etc/profile.d目录的每个文件,它为Linux系统提供了一个集中存放用户登录时要执行的应用专属的启动文件的地方。这些基本跟系统的特定应用有关,大部分应用会创建两个启动文件,一个给bash shell用,一个给c shell用,

2)、$HOME目录下的启动文件

  大多数Linux发行版只用这三个启动文件中的一个;每个用户可以编辑这些文件并添加自己的环境变量来给她们启动每个bash shell会话。

.bash_profile文件:此文件会先去检查HOME目录下是否还有一个叫.bashrc的启动文件,如果有的话,启动文件会先去执行.bashrc文件中的命令,然后将一个目录添加到了PATH环境变量。

二、交互式shell

如果bash shell不是登录系统时启动该的,比如在命令行提示符下输入bash命令启动,这个启动的shell称作交互式shell,这种情况下不会去启动/etc/profile文件,而会去用户的HOME目录下检查bashrc是否存在。此文件有两个作用:

1.查看/etc目录下的共用bashrc文件

2.为用户提供了一个定制自己的命令别名和私有脚本函数的地方。

通用的/etc/bashrc启动文件会被系统上每个启动交互式shell会话的用户执行

三、非交互式shell

系统执行shell脚本时用的就是这种shell。这种情况下不需要担心它没有命令行提示符,但当每次在系统上运行脚本时仍然要运行特定的启动命令,为了处理这种情况,bash shell提供了BASE_ENV环境变量,当shell启动一个非交互式shell进程时,它会检查这个环境变量来查看要执行的启动文件,如果有指定的,shell会执行文件里的命令。

启动bash shell的三种方式下,检查的启动文件的更多相关文章

  1. 09_Hadoop启动或停止的三种方式及启动脚本

    1.Hadoop启动或停止 1)第一种方式 分别启动 HDFS 和 MapReduce,命令如下: 启动: $ start-dfs.sh $ start-mapred.sh 停止: $ stop-ma ...

  2. AndroidStudio中添加依赖的三种方式以及如何引入so文件和arr文件

    AndroidStudio中添加依赖的三个选项,如图:    分别为:库依赖(Library dependency).文件依赖(File dependency)和module依赖(Module dep ...

  3. QTP--启动IE浏览器的三种方式

    第一种方式  创建浏览器对象模式 如果提示无法创建对象时需要先打开对象.   Set ie = CreateObject("InternetExplorer.Application" ...

  4. 前端js,css文件合并三种方式,bat命令

    前端js,css文件合并三种方式,bat命令 前端js文件该如何合并三个方式如下:1. 一个大文件,所有js合并成一个大文件,所有页面都引用它.2. 各个页面大文件,各自页面合并生成自己所需js的大文 ...

  5. jquery.validate+jquery.form提交的三种方式

    原文:http://www.cnblogs.com/datoubaba/archive/2012/06/06/2538873.html jquery.validate+jquery.form提交的三种 ...

  6. ActiveMQ持久化消息的三种方式

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt362 本文只介绍三种方式,分别是持久化为文件,MYSql,Oracle.下面 ...

  7. Ajax上传数据和上传文件(三种方式)

    Ajax向后端发送数据可以有三种方式:原生Ajax方式,jQuery Ajax方式,iframe+form 方式(伪造Ajax方式) <!DOCTYPE html> <html la ...

  8. 三种方式配置Mac OS X的启动项

    在Mac OS X中,有三种方式来实现启动项的配置:1)Login Items:2)StartupItems:3)launchd daemon. 1.Login Items 打开System Pref ...

  9. 【整理】Linux下中文检索引擎coreseek4安装,以及PHP使用sphinx的三种方式(sphinxapi,sphinx的php扩展,SphinxSe作为mysql存储引擎)

          一,软件准备 coreseek4.1 (包含coreseek测试版和mmseg最新版本,以及测试数据包[内置中文分词与搜索.单字切分.mysql数据源.python数据源.RT实时索引等测 ...

随机推荐

  1. Uboot流程分析

    1. uboot的配置分析 1).配置入口分析 首先分析配置: 从make mx6dl_sabresd_android_config可知配置项,搜索Makefile: mx6solo_sabresd_ ...

  2. ios碎片小记

    一.UIImageView 1.图片形状设为圆形时可能会由于图片的宽高比例导致显示出来的效果不是圆形 解决:设置UIImageView的contentMode为UIViewContentModeSca ...

  3. Action、View、ActionResult、ViewResult、ContentResult

    可以,ASP.NET MVC的view和Controller不是严格的匹配的,一个Action Method可以引用多个view,而一个View也可以被一个Action方法使用如下代码所示:    1 ...

  4. JavaScript ES6 promiss的理解。

    本着互联网的分享精神,我将我对promise的理解分享给大家. JavaScript ES6的promise方法主要应用在处理异步函数返回的结果,注意他不是将异步函数转换为同步函数,而是等异步函数有结 ...

  5. ayer.prompt 怎样让输入值为空也可以向下执行

    http://fly.layui.com/jie/4227/ layer.prompt({title: '输入任何口令,并确认',formType: 1, //prompt风格,支持0-2value: ...

  6. CodeForces 616A(水题)

    while(t--) 最后结果t=-1 #include <iostream> #include <string> #include <cstring> #incl ...

  7. python 实现websocket

    python中websocket需要我们自己实现握手代码,流程是这样:服务端启动websocket服务,并监听.当客户端连接过来时,(需要我们自己实现)服务端就接收客户端的请求数据,拿到请求头,根据请 ...

  8. RegExp使用技巧

    正则表达式 //用法 1. /\d/g 2. new RegExp('/\d/','g') //修饰符 g,i,m //元字符 1.元字符是在正则表达式中有特殊含义的非字母字符 . * + ? $ ^ ...

  9. 使用匿名函数给setInterval()传递参数

    在使用JScript的时候,我们有时需要间隔的执行一个方法,比如用来产生网页UI动画特效啥的.这是我们常常会使用方法setInterval或setTimeout,但是由于这两个方法是由脚本宿主模拟出来 ...

  10. Sql语句常用关键字

    --语 句 功 能--数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据 --数 ...