Chinaunix首页 | 论坛 | 博客
  • 博客访问: 285630
  • 博文数量: 70
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 531
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-12 20:22
个人简介

1.01^365=37.8 0.99^365=0.03

文章分类

全部博文(70)

文章存档

2017年(9)

2016年(4)

2015年(14)

2014年(43)

我的朋友

分类: LINUX

2014-02-28 12:34:37

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

 1:交互式登陆shell

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

    /etc/pro         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),并执行由该变量命名的文件中的命令。

执行新shell:
(1)执行交互式的shell:读取并执行/etc/bash.bashrc,以及主目录中的.bashrc
(2)执行shell script:检查BASH_ENV变量的内容,如果有定,则执行该变量所定义的启动文件的内容。

以sh文件名调用bash:
以sh调用bash,则bash将仿照旧版的sh调用启动文件,会尽量兼容POSIX标准,而不使用bash特有的功能:
(1)login shell 调用/bin/sh: 读取并执行/etc/profile和主目录中的.profile
(2)交互式shell: 检查ENV变量的内容,如果有定义,则执行该变量所定义的启动文件的内容。
(3)shell script:不执行任何启动配置文件。

阅读(1256) | 评论(0) | 转发(0) |
0

上一篇: Shell中的引用

下一篇:如何查看shell类型

给主人留下些什么吧!~~