参考《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

最新文章

  1. 匹夫细说C#:庖丁解牛聊委托,那些编译器藏的和U3D给的
  2. Python循环语句
  3. CentOS 6.3下配置软RAID(Software RAID)
  4. JavaScript Scoping and Hoisting
  5. Bridge 使用
  6. Java实现文件复制
  7. 如何学习一门新技术-iOS开发
  8. C# 继承细节
  9. 28.leetcode 13. Roman to Integer
  10. 一个普通的 Zepto 源码分析(二) - ajax 模块
  11. Office远程代码执行漏洞CVE-2017-0199复现
  12. pandas 读取excel文件对数据简单清洗并用matplotlib 将数据展示
  13. python冒泡排序法
  14. Jenkins持续集成学习-Windows环境进行.Net开发1
  15. OC与JS的交互(iOS与H5混编)
  16. Spark Streaming性能调优详解
  17. Debian 鼠标左右手
  18. 自定义View之圆形水波扩散动效
  19. pycharm使用docker镜像的python解释器,pycahrm可视化操作和管理dcoker
  20. 调整Mic音量

热门文章

  1. WordPress创建过程
  2. Extjs 3.0 htmleditor实现插入图片功能
  3. PHP函数积累
  4. linux 下dd命令直接清除分区表(不用再fdisk一个一个的删除啦)
  5. MouseOver/MouseOut vs MouseEnter/MouseLeave
  6. 《Python学习手册》
  7. 复习知识点:UITableView和UICollectionView的常用属性
  8. POJ 1692 Crossed Matchings(DP)
  9. AFNetworking3.0的基本使用方法
  10. iOS 之 UINavigationController 记录