码迷,mamicode.com
首页 > 系统相关 > 详细

shell的运行模式

时间:2015-09-24 14:48:35      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

一、什么是登陆shell?什么是非登陆shell?


1、登陆shell是指:


(1)用户登陆时,输入用户名和密码后启动的shell;


(2)通过带--login参数的命令:bash  --login而启动的shell。


2、非登录shell指:


用户登录后,直接运行bash命令启动的shell。


3、对于用户来说,登陆shell和非登陆shell的主要区别是:启动shell时所执行的startup文件不同。


(1)登录shell的启动文件是/etc/profile、~/.bash_profile


(2) 非登录shell的启动文件是~/.bashrc


二、bash的运行模式


交互式shell

      交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。

  这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。


  交互式模式又分为四种类型:login,非login,posix以及受限的shell.

  确定一个shell是否是交互式的可以通过检测$PS1环境变量.

  (1) 当Bash作为login shell被激活时,它将依次读取并执行以下文件:

  /etc/profile,~/.bash_profile,~/.bash_login,~/.profile

  使用--noprofile选项激活Bash可以禁止其读任何初始化文件

  在退出时执行 ~/.bash_logout 文件

  (2) 当Bash作为非login shell被激活时,它将读取并执行~/.bashrc

  使用--norc选项激活Bash可以禁止执行任何初始化文件,使用

  --rcfile file可以指定执行的初始化文件.

  (3) 当Bash作为posix模式被激活时,它将先检查$ENV变量是否定义.

  若定义,Bash读取并执行有$ENV变量扩展而得到的文件,否则不再

  执行任何初始化文件。

  (4) 当Bash作为受限模式被激活时,它除了禁止某些操作以外,其他行为

  于其他模式相同.受限操作有:改变目录,修改$SHELL和$PATH变量,

  运行exec,以绝对路径运行程序以及使用重定向.Bash 1.x中不包含

  受限模式.


非交互式shell

      shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,

  而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。这种

  模式主要用来运行Shell脚本.启动后,Bash检查$BASH_ENV变量,若定义,这执行该变量指定文件

  中包含的命令.


Bash 的激活选项

-c string    该选项表明string中包含了一条命令.如 bash -c ls ~

-i       使Bash以交互式方式运行

-r       使Bash以受限方式运行

--login     使Bash以登录Shell方式运行

--posix     使Bash遵循POSIX标准

--verbose    使Bash显示所有其读入的输入行

--help     打印Bash的使用信息

--version    打印版本信息

--noprofile

--norc

--rcfile file


shell的运行模式

标签:

原文地址:http://my.oschina.net/u/2408078/blog/510631

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!