交互式shell和⾮交互式shell、登录shell和⾮登录shell的区别bash启动⼀共有4种情况:
1.交互式的登录shell(在physical server前login的)
2.交互式的⾮登录shell(ssh连接的应该算是这种,但是前提是必须已经connected,因为连接的其实是系统上的sshd那个服务。)
3.⾮交互式的启动(⾮交互肯定是⾮登录的,如在crontab⾥运⾏的script)
4.由系统的守护进程启动(如,sshd,rshd)
也算写过⼀些Bash脚本的⼈了,不过对与这⼏个概念,还不是很清楚,于是恶补了⼀下。
交互式shell和⾮交互式shell、登录shell和⾮登录shell的区别。
⾸先,这是两个不同的维度来划分的,⼀个是是否交互式,另⼀个是是否登录。
交互式shell和⾮交互式shell
交互式模式就是shell等待你的输⼊, 并且⽴即执⾏你提交的命令。这种模式被称作交互式是因为shell与⽤户进⾏交互。这种模式也是⼤多数⽤户⾮常熟悉的:登录、执⾏⼀些命令、签退。当你签退后,shell
也终⽌了。
shell界面shell也可以运⾏在另外⼀种模式:⾮交互式模式,以shell script(⾮交互)⽅式执⾏。在这种模式下,shell不与你进⾏交互,⽽是读取存放在⽂件中的命令,并且执⾏它们。当它读到⽂件的结尾,shell也就终⽌了。
chinaunix论坛中关于登录shell与⾮登录shell、交互式shell与⾮交互式Shell的讨论:
Login Shell:当init3时,mingetty spawn出登录提⽰符的时候,你输⼊帐号和密码进⼊了,出现了shell提⽰符,这个过程就是登录外壳;
Interactive Shell:接下来你得到了⼀个像root@host />这样的提⽰符,你输⼊什么,它就解释出什么,这就是交互式外壳;你在当前Shell⼜fork了⼀个shell(bash),这个bash也是交互式外壳。通常情况下interactive shell是login shell派⽣出来的。
Non Interactive Shell:你可能需要学习写⼀个bash script,⽤外部shell执⾏:bash  script.sh,它(bash)从第⼀条命令执⾏到最后⼀条然后退出,不与你进⾏任何交互,它就是⾮交互式外壳。
交互式⾮登录shell就是指你在Gnome图形界⾯中打开“终端”出来的那种窗⼝程序,
和登录shell相⽐,它是“⾮登录”的,你并不需要输⼊⽤户名和密码,
和⾮交互式shell相⽐,这是“交互式”的,就像你说的那它:你输⼊什么,它就解释出什么
执⾏exit退出⾮登录shell状态; 使⽤ssh连接的,就是⾮登录。
执⾏logout退出登录shell状态。
在登录shell⾥,确实只读取/etc/profile和~/.bash_profile, ~/.bash_login, and ~/.profile按顺序最先的⼀个,并执⾏其中的命令。除⾮被 --noprofile选项禁⽌了;
在⾮登录shell⾥,确实只读取/etc/bash.bashrc和~/.bashrc

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。