交互式、非交互式,登陆式、非登陆式Shell

交互式Shell和非交互式Shellshell

  1. 交互式模式:在终端上执行,shell等待你的输入,而且当即执行你提交的命令。这种模式被称做交互式是由于shell与用户进行交互。这种模式也是大多数用户很是熟悉的:登陆、执行一些命令、退出。当你退出后,shell也终止了。
  2. 非交互式模式:以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,而且执行它们。当它读到文件的结尾EOF,shell也就终止了。
  3. 能够经过打印“$-”变量的值(表明着当前shell的选项标志),查看其中的“i”选项(表示interactive shell)来区分交互式与非交互式shell。

登陆式Shell和非登陆式Shellbash

  1. 登陆shell:须要用户名、密码登陆后才能进入的shell(或者经过--login”选项生成的shell)。
  2. 非登陆shell:不须要输入用户名和密码便可打开的Shell,例如:直接命令“bash”就是打开一个新的非登陆shell;在Gnome或KDE中打开一个“终端”(terminal)窗口程序也是一个非登陆shell。
  3. 退出一个登陆shell:exit或者logout;退出一个非登陆shell:只能exit。

使用启动脚本,可让自定义的环境一劳永逸。spa

这些脚本在shell被建立时运行根据shell是登陆shell仍是非登陆shell,所运行的启动脚本也会不同。code

su - username是登陆shell;su username是非登陆shell(注意su - username中间有空格)。直接打开终端是非登陆shell。blog

keegen@keegensCP:~$ su - keegen
密码: 
keegen@keegensCP:~$ echo $0
-su
keegen@keegensCP:~$ logout
keegen@keegensCP:~$ echo $0
bash

 /etc/profile 是登入shell启动后运行的第一个启动脚本,它只为登入shell运行;非登入shell不会引起这个脚本。ip

登入shell加载启动脚本的顺序为
terminal

/etc/profile → /etc/profile.d → ~/.bash_profile → ~/.bashrc → /etc/bashrc

 每一个调用的脚本会依次撤销前一个调用脚本中的改变。it

在退出登入shell时,咱们还能够执行某些任务,如建立自动备份、清除临时文件。把这些任务放在.bash_logout文件中。class

非登入shell加载启动脚本的顺序
登录

~/.bashrc → /etc/bashrc → /etc/profile.d
相关文章
相关标签/搜索