摘要:在进行环境变量设置和命令别名的设置的时候,常常会接触到四个概念:交互式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...
### 交互式Shell与非交互式Shell的区别 #### 一、基本概念 在理解交互式Shell与非交互式Shell之前,我们先明确几个基础概念: - **Shell**:Shell是Unix/Linux操作系统的重要组成部分,它是用户与操作系统之间的...
6. **启动 (INVOCATION)**:讲解如何启动Bash,包括不同的启动模式,如登录Shell、非登录Shell和交互式Shell。 7. **定义 (DEFINITIONS)**:定义了Shell中的一些术语,帮助读者理解文档中使用的专业词汇。 8. **...
通过理解这些,你能够编写出更加健壮和高效的shell脚本,甚至可以对bash本身进行定制和扩展。 总而言之,bash 4.2源代码是学习shell编程和系统级编程的宝贵资源。它不仅可以帮助你深入了解shell的工作原理,还能...
《Learning the Bash Shell》这本书是深入理解Bash Shell的宝贵资料,涵盖了从基本操作到高级特性的全面教程。通过阅读本书,用户不仅可以掌握Bash Shell的使用,还能进一步提升Linux系统的驾驭能力。 总之,学习...
Bash Shell是Linux和大多数UNIX系统中最常用的交互式命令行界面和脚本编程环境。它作为用户与操作系统之间的重要接口,掌握Bash Shell对于理解和操作Linux/UNIX至关重要。 本书详细介绍了Bash的各种特性和使用技巧...
- **非交互式启动**:不与用户进行直接交互的Bash进程,例如通过脚本调用时。 #### 4. 注释与帮助 - **注释**:使用`#`符号开始的行被视为注释。 - **帮助**:通过内置命令如`help`查看可用命令的帮助信息。 #### ...
在大多数 Linux 发行版中,Bash 被默认设置为主要的交互式 shell,用于接收用户的命令并将这些命令传递给内核进行执行。 #### 二、Shell 的工作原理 Shell 可以理解为一个命令解释器,它负责接收用户通过键盘输入...
在Linux和Unix-like操作系统中,Bash Shell是默认的命令行解释器,它为用户提供了一个交互式的环境来执行命令、脚本和管理系统。Bash Shell高级编程涉及到一系列技巧和功能,可以帮助用户提高效率,实现自动化任务。...
- **3.3 非交互式启动**:非交互模式下,Bash通常用于执行脚本文件而不接受用户输入。 #### 4. 注释与帮助 - **注释**:在Bash脚本中,使用`#`符号来添加注释,以便解释脚本的工作原理。 - **帮助**:可以通过内置...
Shell 可以分为两种:交互式 Shell 和非交互式 Shell。 2. Shell 的运行原理:Shell 的运行原理可以分为以下步骤: * 获取命令行 * 解析命令行 * 建立子进程 * 执行命令 * 等待子进程结束 3. 获取命令行:...
- **1.5 交互式shell使用** - 讲解如何启动和使用bash进行命令行操作。 - **1.6 文件** - 介绍bash中的基本文件操作,如创建、删除和移动文件。 - **1.7 输入和输出** - 描述标准输入、标准输出和标准错误的...
在bash环境中,脚本可以根据其是否与用户进行交互分为两大类:交互式脚本和非交互式脚本。 ##### 2.1 非交互式脚本 非交互式脚本的特点在于: - **可预见性**:脚本在执行时不需要读取用户的任何输入,所有参数都...
Shell不仅支持交互式操作,让用户逐条输入命令进行执行,还能通过批处理方式运行预先写好的Shell脚本,一次性执行多条指令。这种脚本编程类似于传统的编程语言,包含变量、条件语句、循环结构等元素,但其脚本是解释...
标题中的“Ruby-gitsh程序是git的交互式shell”揭示了一个关键知识点,即`gitsh`是一个基于Ruby语言构建的工具,它为用户提供了一个交互式的Git环境。这意味着用户可以直接在命令行界面中输入Git命令,就像在普通的...
- **非交互式之连通类**:网络连接保持,但不提供交互式shell。 - **半交互式**:部分交互,但不完全模拟命令行环境。 - **交互式**:提供基本的命令行交互,但可能缺乏某些特性。 - **完全交互式**:如同本地...