bash 深入理解:交互式shell和非交互式shell、登录shell和非登录shell的区别

原创 2013年10月31日 10:50:33

摘要:在进行环境变量设置和命令别名的设置的时候,常常会接触到四个概念:交互式bash、非交互式bash、login bash和no login bash。本文主要来澄清这四个概念。


本文来源:bash 深入理解:交互式shell和非交互式shell、登录shell和非登录shell的区别http://blog.csdn.net/trochiluses/article/details/13767669 


1.交互式bash与非交互式bash


交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,shell也终止了。


shell也可以运行在另外一种模式:非交互式模式,以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就终止了。


区别:读取的配置文件不同,交互式bash必然读取~/.bashrc文件;非交互式bash读取的是环境变量BASH_ENV(通常情况下)所指定的配置文件。


2.login bash与nologin bash


登陆shell是指:(1)用户登陆时,输入用户名和密码后启动的shell(例如使用ssh登录远程主机等);(2)通过带--login参数的命令:bash --login而启动的shell。


非登录bash:登录以后所打开的bash,比如通过Ctrl+Alt+T组合键打开的bash环境,直接通过bash命令打开的环境。


对于用户来说,登陆shell和非登陆shell的主要区别是:启动shell时所执行的startup文件不同。登陆shell执行startup文件为:/etc/profile、~/.bash_profile、~/.bashrc(这里只是从现象上得出的推论,这种推论是有问题的,稍后讨论),而非登陆shell执行的startup文件仅为:~/.bashrc。


3.bash中解析命令的次序


在bash中输入一个命令,首先会从which所指定的路径中进行命令寻找(有先后顺序);然后从配置文件的命令别名中寻找。注意,配置文件的修改不会立即影响到bash的环境。

交互式SHELL和非交互式SHELL、登录SHELL和非登录SHELL的区别

曾经写过“交互式shell和非交互式shell、登录shell和非登录shell的区别”,但那时理解相对更浅一些,现在多了一点认识,把这篇文章稍微完善一下吧。 交互式shell和非交互式shel...
  • wisgood
  • wisgood
  • 2016年07月27日 11:05
  • 3612

交互式shell和非交互式shell、登录…

也算写过一些Bash脚本的人了,不过对与这几个概念,还不是很清楚,于是恶补了一下。 交互式shell和非交互式shell、登录shell和非登录shell的区别。 首先,这是两个不同的维度来划分的...
  • li19236
  • li19236
  • 2014年11月25日 18:11
  • 2773

登录/非登录、交互/非交互式shell

登录与非登录shell的区别: 直观区分方式:是否需要输入用户名密码。 转换: 非登录可以转换成登录 使用--login 考虑转换情况,相对科学的区分:既不使用密码,也不使用--login转换的是非登...
  • yaoxiaoyang
  • yaoxiaoyang
  • 2017年01月03日 23:02
  • 499

Linux Shell Bash 交互与非交互式脚本

http://blog.163.com/howl_prowler/blog/static/266197152009524105126976/
  • wangjingyu00711
  • wangjingyu00711
  • 2014年11月21日 16:51
  • 642

关于“交互式-非交互式”与“登录-非登陆”shell的总结

按照bash是否与用户进行交互,可以将其分为“交互式”与“非交互式”;而按照bash是否被用户登陆,又可将其分为“登陆shell”与“非登陆shell”。本文以CentOS系统为例,着重讨论和总结了s...
  • sch0120
  • sch0120
  • 2017年04月18日 12:35
  • 402

/etc/profile与/etc/bashrc、交互式与非交互式、login与non-login shell的区别

线上的memcached又挂了,仍然没有得到core文件。排查原因,同事发现启动memcached的脚本存在可疑问题。 问题一:没有设置memcached工作目录,有可能core dump时没有工作目...
  • wang_xijue
  • wang_xijue
  • 2015年07月09日 17:56
  • 1402

交互式shell和非交互式shell、登录shell和非登录shell的区别

也算写过一些Bash脚本的人了,不过对与这几个概念,还不是很清楚,于是恶补了一下。 交互式shell和非交互式shell、登录shell和非登录shell的区别。 首先,这是两个不同的维度来划分的...
  • xiaotengyi2012
  • xiaotengyi2012
  • 2011年11月09日 14:22
  • 909

交互式SHELL和非交互式SHELL、登录SHELL和非登录SHELL的区别

转载:http://smilejay.com/2012/10/interactive-shell-login-shell/曾经写过“交互式shell和非交互式shell、登录shell和非登录shel...
  • elihe2011
  • elihe2011
  • 2016年03月17日 12:41
  • 169

交互式shell和非交互式shell、登录shell和非登录shell的区别

交互 式shell和非交互式shell、登录shell和非登录shell的区别。 首先,这是两个不同的维度来划分的,一个是是否交互式,另 一个是是否登录。 交互式shell和非交互式shell ...
  • u012570105
  • u012570105
  • 2015年08月22日 20:55
  • 236

交互式使用Bash Shell

1.  用set命令设置bash的选项:     下面为set主要选项的列表及其表述: 选项名 开关缩写 描述 allexport -a 打开此开关,所有...
  • rwdxll
  • rwdxll
  • 2014年10月22日 01:47
  • 309
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:bash 深入理解:交互式shell和非交互式shell、登录shell和非登录shell的区别
举报原因:
原因补充:

(最多只允许输入30个字)