Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >LinuxShell分类

LinuxShell分类

作者头像
hotarugali
发布于 2022-02-28 12:23:16
发布于 2022-02-28 12:23:16
4270
举报

Linux Shell 从交互式和登录式来看可划分为不同的类别。

1. 交互式 Shell

交互式 Shell 是指在终端命令行上执行,以提示符的方式在终端等待用户输入,并实时运行用户输入的命令的模式;即与用户交互的模式。

1.1 交互登录式 Shell

交互登录式 Shell 是需要用户名和密码登录后进入的 Shell(比如终端下登录远程服务器)或者通过 -login 选项在终端启动的 Shell 。

  • 交互登录式 Shell 可以使用 exitlogout 命令退出 Shell
  • 登录本地桌面 Linux 系统本质上也是登录一个 Linux Shell 会话,即交互登录式 Shell(这也是为什么系统会有注销/登出选项退出当前系统)

▲ 登录交互登录式 Shell 时

  1. 首先会读取 /etc/profile 启动文件
  • /etc/profile 文件是 Bash Shell 默认的主启动文件,不同 Linux 发行版其内容不尽相同

然后按照顺序读取第一个被找到的启动文件($HOME/.bashrc 文件不在其中是因为该文件通常通过以下文件运行):

  • $HOME/.bash_profile
  • $HOME/.bash_login
  • $HOME/.profile

▲ 登出交互登录式 Shell 时

  1. 首先会读取 $HOME/.bash_logout 文件
  2. 然后会读取 /etc/bash.bash_logout 文件(该文件并不是所有 Linux 发行版都有,比如 Manjaro 20.0 有但 Ubuntu 20.04 则没有)

【注】如果将一些设定的系统全局环境变量存放在 /etc/profile 文件中,那么当所用 Linux 发行版升级时,该文件也会跟着升级,则所定制的所有变量设置就都被覆盖了。

  • 存储系统永久性环境变量:最好的办法是将所定制的系统全局变量存放在 /etc/profile.d 目录下新建的一个以 .sh 结尾的文件中(而不是直接修改 /etc/profile 文件)。
  • 存储个人用户永久性环境变量:将个人用户所有定制的环境变量写入 $HOME/.bashrc 文件中。

1.2 交互非登录式 Shell

交互非登录式 Shell 是指不需要用户名和密码也不指定 -login 选项即可打开的 Shell(比如直接在终端运行 bash 打开一个 Bash Shell;或者在 Linux 系统桌面上打开一个终端 terminal 窗口程序)。

  • 交互非登录式 Shell 只能使用 exit 退出 Shell

▲ 启动交互非登录式 Shell 时

  1. 只会读取 $HOME/.bashrc 文件(而不会读取 /etc/profile 文件。这也是为什么修改 /etc/profile 文件后,如果未重新登录系统,则新打开的交互非登录式 Shell 下并未产生影响的)

2. 非交互式 Shell

非交互式 Shell 是指以 Shell 脚本形式执行。在这种模式下,Shell 不与用户进行交互,而是读取存放在 Shell 脚本文件中的命令并执行,当读取到脚本文件结尾 EOF 时,Shell 终止。

▲ 启动非交互式 Shell 时

  1. Bash Shell 提供了 BASH_ENV 环境变量用于指定启动非交互式 Shell 时需要启动的文件(大多数 Linux 发行版没有设定该环境变量)

【注】如果 BASH_ENV 环境变量没有设定,也不意味着非交互式 Shell 就无法使用任何系统全局变量。因为非交互式 Shell 一般作为交互式 Shell 的孩子 Shell(不是子 Shell,详情参见 LinuxShell父子关系概述)启动,故会继承父 Shell 的全部全局环境变量;或者直接在交互式 Shell 下执行,故也可以直接使用当前 Shell 的所有环境变量。

2.1 执行 Shell 脚本文件方式

Linux 下执行 Shell 脚本文件有两种方式,以下以 Bash Shell 为例:

  • source script. script 以这种方式执行脚本文件不会创建孩子 Shell(child shell),直接在当前 Shell 执行脚本文件中的命令。
  • bash script./script 以这种方式执行脚本文件会创建孩子 Shell(child shell),并在孩子 Shell 中执行脚本文件。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
《Linux命令行与shell脚本编程大全》 第六章环境变量
很多程序和脚本都通过环境变量来获取系统信息、存储临时数据和配置信息。 6.1 什么是环境变量: bash shell用一个叫环境变量(environment variable)的特性来存储有关shell会话和工作环境的信息。 这项特性允许在内存中存储数据,以便程序能轻松访问到它们。 在bash shell中,分两类: 全局变量:对于shell会话和所有生成的子shell都是可见的 局部变量:只对创建的它们的shell可见 6.1.1全局环境变量 查看全局变量,  $env    $printenv 查看某个
xcywt
2018/01/11
1K0
《Linux命令行与shell脚本编程大全》 第六章环境变量
深入了解定制 Bash | Linux 中国
除了能使用其它程序之外,Bash shell 还含有一些内置命令和关键字。Bash 内置功能很强大,甚至能够作为一门 高级语言 独当一面。Bash 的几个关键字和操作符类似于 C 语言。
用户1880875
2021/10/11
1.2K0
【科研利器】关于 “.bash_profile” 和 “.bashrc”区别的总结
项目环境部署是很多人的薄弱项,一些简单的工作可以照着搜索来的步骤凑合部署成功,但并不明白其中的原理,偶尔遇到一些 ERR ,就无从下手。项目环境部署,需要一些基础服务,如 java 环境,tomcat 环境、mysql 等等;服务部署成功后,还需要给其配置环境变量;要配置环境变量,就要用到 bashrc 或 bash_profile 文件,可是他们有啥区别,一直不明白,今天看到这篇文章,结合自己实践,分享给各位。
自学气象人
2022/11/02
9650
【科研利器】关于 “.bash_profile” 和 “.bashrc”区别的总结
Linux环境变量加载顺序分析
我们登录linux有很多种,bash来交互式执行,或者直接非交互式执行命令。试验后,可以发现,原来这几个的环境变量加载都是不同的。
sean.liu
2022/09/07
2K0
.bashrc 和 .bash_profile 的异同
如果你在终端命令行上花费很多时间,很有可能你想要自定义你的 Shell 环境。这就意味着比如创建关联,添加一个新目录到$PATH,或者修改一个 shell 提示符。
雪梦科技
2020/05/14
3.3K0
.bashrc 和 .bash_profile 的异同
jenkins执行shell读不到环境变量问题
从jenkins远程执行shell源码分析系列中,了解到jenkins执行shell的原理。在使用jenkins过程中,发现执行shell读取不到/etc/profile以及用户下.bash_profile设置的环境变量。
lovelife110
2021/01/14
5.9K0
/etc/profile,/etc/bashrc等文件的区别与作用
当我们在做一些与bash相关的操作时,比如设置别名、登录启动项等,多多少少都会与下面几个文件打交道,用的时候一查,然后又忘了。好记性不如烂笔头,下面老高就帮你理一理这些文件到底是干啥的。
老高的技术博客
2022/12/28
6140
Shell 简明教程
Shell 的作用是解释执行用户的命令,用户输入一条命令,shell 就行一条,这种方式成为交互式,还有另外一种方式,就是用户事先写一个 shell 脚本,包含很多命令,然后让 shell 一次性的进行执行,这种方式被称为“批处理方式”。 一般我们在UNIX中使用的 shell 就是 bash 和 sh,当然也有其他 shell,在 UNIX 环境下可以使用 /etc/shells: valid login shells 命令来显示所有的 shell,想要切换,直接输入 shell 名即可。
用户3147702
2022/06/27
2.1K0
Shell 简明教程
Linux 下的JDK环境的搭建
配置jdk环境遇到的问题: 在使用cp指令复制文件夹时,出现错误如下: ~/programs/qt$ cp p20_gotocelldialog ./p22_gotocelldialog cp: 略过目录"p20_gotocelldialog" 解决方法:cp 后加-r 原因: 用man命令查看cp指令 -R, -r, --recursive               copy directories recursively 当目录不为空时需要递归复制文件中的内容,所以需要加上-r选项 sour
拾点阳光
2018/05/10
1.6K0
Linux学习笔记(四)
接下来一段时间打算学一下linux 学习来源书本《Linux命令行与shell脚本编程大全 第三版》
epoos
2022/06/06
1.1K0
Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程
在登录Linux时要执行文件的过程如下: 在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,
阳光岛主
2019/02/19
1.2K0
Shell 编程(3)-bash 配置文件
用户登录系统时,bash 会进行一系列操作,如加载各种 bash 配置文件,设置或清空一些列的变量,有时还会执行一些自定义的命令。
懒人的小脑
2019/01/26
1.5K0
Shell 编程(3)-bash 配置文件
【Linux】《how linux work》第十三章 用户环境
This book’s primary focus is on the Linux system that normally lies underneath server processes and interactive user sessions. But eventually, the system and the user have to meet somewhere. Startup files play an important role at this point, because they set defaults for the shell and other interactive programs. They determine how the system behaves when a user logs in.
阿东
2024/04/28
1990
【Linux】《how linux work》第十三章 用户环境
登录Shell与非登录Shell之间的区别
我理解交互式shell和非交互式shell之间的基本区别。但是,登录shell和非登录shell之间究竟有什么区别呢?
程序熵
2024/10/28
1970
登录Shell与非登录Shell之间的区别
profile与bashrc分析
/etc/profile : 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置.
BUG弄潮儿
2022/06/30
2.4K0
Windows和Linux的环境变量
环境变量(Environment Variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。
狼啸风云
2019/12/20
4.1K0
Windows和Linux的环境变量
11-2 环境是如何建立的
在普通用户看来 ~/.bashrc 可能是最重要的启动文件,因为系统几乎总是要读取。non-login shell 会默认读取 ~/.bashrc ,而大多数login shell 的启动文件也能 以读取 ~/.bashrc 文件的方式来编写。
见贤思齊
2020/08/11
3290
11-2 环境是如何建立的
第十二章 : shell 环境
As we discussed earlier, the shell maintains a body of information during our shellsession called the environment. Data stored in the environment is used by programs todetermine facts about our configuration. While most programs use configuration files tostore program settings, some programs will also look for values stored in the environmentto adjust their behavior. Knowing this, we can use the environment to customize ourshell experience.
砖业洋__
2023/05/06
4540
理解 Linux/Unix 登录脚本
不知道你有没有遇到过这样的场景,当你需要设置一个环境变量,或者运行一个程序设置你的shell或桌面环境,但是不知道在哪里是最方便设置的位置。
哲洛不闹
2018/09/14
1.2K0
理解 Linux/Unix 登录脚本
【Shell】环境变量 自定义变量 特殊变量
是系统提供的共享变量.是linux系统加载Shell的配置文件中定义的变量共享给所有的Shell程序使用
陶然同学
2023/10/23
6690
【Shell】环境变量 自定义变量 特殊变量
相关推荐
《Linux命令行与shell脚本编程大全》 第六章环境变量
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档