参考《linux命令、编辑器与shell编程》(清华大学出版社)

  当启动shell时,它将运行启动文件来初始化自己。具体运行哪个文件取决于该shell是登陆shell还是非登陆shell的交互方式(比如通过bash),又或者是一个非交互式shell(用来执行shell脚本)。要执行启动文件中的命令,用户就必须具备读的权限,而一般的Linux发行版本都会把对应的命令放在一些启动文件中。

1:交互式登陆shell

交互式登陆shell指的是当用户登录系统时所用的那个shell(可以默认指定,如bash shell)。登录shell 将查找几个不同的启动文件来处理其中的命令, bash shell 处理文件的顺序如下:

/etc/profile shell首先执行/etc/profile中的命令。设置这个文件后,可以为系统内所有的bash用户建立默认的特征(不同版本的Linux在此文件放置的命令不尽相同);

~/.bash_profile~/.bash_login~/.profile 然后shell依次查找这些文件,并执行它找到的第一个文件中的命令。可以将命令放在这些文件中,以重写/etc/profile文件中默认的设置;

~/.bash_logout 当用户注销时,bash执行文件~/.bash_logout中的命令,这个文件包含了退出会话时执行的清理命令,如:删除临时文件等;

2:交互式非登陆shell

交互式非登陆shell指的是如果启动了一个bash shell 而没有等录系统(如在CLI 提示符中键入bash),则启动了一个交互式非登录shell。交互式非登录shell并不执行前面提到的启动文件中的命令,然而交互式非登陆shell从登录shell继承了由这些启动文件设置的shell变量。

/etc/bashrc 尽管不是通过bash直接调用,但许多~/.bashrc文件调用/etc/bashrc。这种设置使得超级用户可以为系统内的非登陆shell建立默认属性。

.bashrc 交互式非登陆shell执行~/.bashrc文件中的命令,而登陆shell的启动文件(如.bash_profile)通常会运行这个文件。这样,登陆shell和非登陆shell都可以运行.bashrc中的命令了。

3:非交互式shell

非交互式shell指的是以shell script(脚本)方式运行。在这种模式在运行时shell 并不与用户进行交互(除非在运行时需要用户指定运行参数),而是读取存放在文件中的命令并执行它们。当它读到文件的结尾,shell 也就终止了。这些shell从登陆时就继承了由这些启动文件设置的shell变量。

BASH_ENV 非交互式shell查找环境变量BASH_ENV(或者当作为sh调用时为的ENV),并执行由该变量命名的文件中的命令。

http://www.cnblogs.com/zhaoyl/archive/2012/07/07/2580744.html

shell登录模式及其相应配置文件(转)的更多相关文章

  1. Shell基础-环境变量配置文件

    Shell基础-环境变量配置文件 source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生效 主要的配置文件: /etc/p ...

  2. shell脚本批量生成配置文件

    如果管理的站点和服务器较多的情况下,每次修改配置文件都相当痛苦.因而想到了用shell脚本来批量生成配置文件和配置数据.下面这个脚本是为了批量生成nagios监控配置文件的一个shell脚本程序.其原 ...

  3. 【shell】变量的配置文件

    (1)/etc/profile   登录时,会执行.全局(公有)配置,不管是哪个用户,登录时都会读取该文件.(2)/ect/bashrc   Ubuntu没有此文件,与之对应的是/ect/bash.b ...

  4. 管道符和作业控制 shell变量 环境变量配置文件

    8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件 管道符和作业控制 管道符:表示把一个文件的输出内容传送到后面的命令 grep  用来过滤指定关键词的命令 “|” 为 ...

  5. Linux Shell基础 环境变量配置文件

    source命令:使环境变量配置文件强制生效 source 命令会强制执行脚本中的全部命令,而忽略脚本文件的权限.该命令主要用于让重新配置的环境变量配置文件强制生效.source 命令格式如下: [r ...

  6. linux笔记:shell基础-环境变量配置文件

    source命令(重新读入配置文件,不用重启就直接生效): 环境变量配置文件: linux中的环境变量配置文件(~代表当前用户的家目录): 配置文件读取顺序: /etc/profile 文件的作用:

  7. Shell编程-环境变量配置文件

    1.source命令 修改配置文件后,必须注销重新登陆才能生效,使用source命令可以不用重新登陆 source  配置文件 . 配置文件 环境变量配置文件中主要是定义对系统操作环境生效的系统默认环 ...

  8. 使用shell脚本替换Hadoop配置文件的值

    因为懒汉式的实现是线程安全的,所以会降低整个访问速度,而且每次访问都要判断一次.有没有更好的方式实现呢?可以使用"双重检查枷锁"的方式来实现. 所谓"双重检查加锁&quo ...

  9. shell脚本 比较mysql配置文件

    一.简介 源码地址 日期:2019/12/19 介绍:较两个mysql实例的配置是否一致,支持比较配置文件,也支持比较系统变量的值 效果图: 二.使用 适用:centos6+ 语言:中文 注意:无 下 ...

随机推荐

  1. nodejs hello world (调用文件执行没反应)

    今天学习了node.js ,来看一下hello world 的写法. 1. 首先安装node.js的驱动文件.http://nodejs.org/ 2. a:安装好node之后,在CMD窗口输入nod ...

  2. Android中图片处理相关问题

    在Android的开发中,我们经常回去处理一些图片相关的问题,比如当加载图片到内存中产生的OOM(OutOfMemory)异常.图片加载到内存中占多大内存的问题.jpg png两种常见的图片的原理及区 ...

  3. Port 8081 already in use, packager is either not running or not running correctly

    运行 react_native 时发生这个错误,解决办法 关掉端口8081对应的进程 1.打开终端,输入命令:lsof -i:8081 2.此时提示: COMMAND   PID    USER   ...

  4. URAL 1260 Nudnik Photographer DFS DP

    题目:click here :这个题可以先dfs深搜下,规律dp dfs: #include <bits/stdc++.h> using namespace std; #define S ...

  5. s3c2440栈分配情况(fl2440裸机 stack)

    //2440INIT.S ;The location of stacks UserStack EQU (_STACK_BASEADDRESS-0x3800) ;0x33ff4800 ~ SVCStac ...

  6. BZOJ 3293 分金币

    整体来说,这道题与之前做的1045题目完全一样,出了说法不一样外,思路及做法可以照搬,因此在这里便不再详解.        程序如下:(如有疑问请参看我的博客http://www.cnblogs.co ...

  7. django-celery提供给顾客使用实例

    导入数据库 from djcelery import models as celery_models   celery_models.PeriodicTask.objects.create(...) ...

  8. Visual Studio 2013 Xamarin for iOS 环境搭建

    原文:Visual Studio 2013 Xamarin for iOS 环境搭建 一.Mac安装Xamarin.iOS 1,我的Mac 环境:OSX 10.10.3.Xcode 6.3.2 (使用 ...

  9. 「JAVA」:Berkeley DB的JAVA连接

    Berkeley DB是一个嵌入式的数据库,它适合于管理海量的.简单的数据.关键字/数据(key/value)是Berkeley DB用来进行数据管理的基础.每个key/value构成了一条记录,而整 ...

  10. java学习之实现文件的复制

    package com.io; import java.io.*; import java.text.SimpleDateFormat; import java.util.Date; /** * 文件 ...