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

摘要:在进行环境变量设置和命令别名的设置的时候,常常会接触到四个概念:交互式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的环境。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值