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

交互式Shell和非交互式Shell

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

登录式Shell和非登录式Shell

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

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

这些脚本在shell被创建时运行根据shell是登录shell还是非登录shell,所运行的启动脚本也会不一样。

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

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

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

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

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

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

在退出登入shell时,我们还可以执行某些任务,如创建自动备份、清除临时文件。把这些任务放在.bash_logout文件中。

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

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

转载于:https://www.cnblogs.com/keegentang/p/10671471.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值