shell的类型探索

简介: shell的类型探索

什么是shell?

shell是一个程序,它和kernel(内核)进行交互,它从用户那里获取输入指令发送到kernel,在kernel执行指令后的结果返回输出给shell。在没有GUI(图形)的时代,shell是系统的主要界面,也是和kernel交互的唯一方式。 虽然现在可以通过GUI完成某些操作,但是shell的强大是GUI无法完全取代的。

Login Shell(登录式shel)和Non-Login Shell(非登录式shell)

Login Shell

当我们通过终端登录一台主机时,主机默认会为我们启动一个shell,因为这个shell是在登录后启动的,所以我们可以理解为,它是Login Shell。在sudo命令-i参数、su命令-l参数也都提到了Login Shell。

判断是否是Login Shell,可以使用echo $0,如果打印出来的名称是-bash或是-su,第一个字符是“-”,就说明这是一个Login Shell,又或是在docker命令中使用了--login参数,这也是个Login Shell。

Login Shell执行以下脚本:/etc/profile、/etc/profile.d/中脚本、当前用户~/.bash_profile、当前用户~/.bashrc、执行/etc/bashrc

Non Login Shell

Non Login Shell是通过Login Shell启动的shell,例如,登录主机后,输入bash命令再启动一个shell,这个shell就是Non Login Shell。

Login Shell执行以下脚本:~/.bashrc、/etc/bashrc、/etc/profile.d

同样Non Login Shell也可以通过$0输出结果来判断,echo $0打印出来的结果是bash或su,可以认为是Non Login Shell。

补充:检测当前是否是Login Shell,还可以通过输入logout命令,如果当前是Login Shell,执行结果相当于exit,如果不是Non Login Shell会提示logout: not login shell。

interactive shell(交互式shell)和non-interactive shell(非交互式shell)

我们日常在终端中使用的就是interactive shell,即输入提交命令,返回结果。

当我们执行shell脚本时,bash helloword.sh,此时的shell就是non-interactive shell

目录
相关文章
|
存储 Shell Linux
【Shell 命令集合 系统设置 内建命令】⭐Linux 声明变量的属性和类型 declare命令 使用指南
【Shell 命令集合 系统设置 内建命令】⭐Linux 声明变量的属性和类型 declare命令 使用指南
220 0
|
存储 Shell Linux
【Shell 命令集合 网络通讯 】⭐Linux 显示当前系统的主机名和操作系统类型 uuname命令 使用教程
【Shell 命令集合 网络通讯 】⭐Linux 显示当前系统的主机名和操作系统类型 uuname命令 使用教程
214 0
|
Ubuntu Shell
Ubuntu用数组统计用户shell类型及对应数量
Ubuntu用数组统计用户shell类型及对应数量
201 0
|
SQL 机器学习/深度学习 关系型数据库
Shell变量的作用、类型,及如何利用脚本配合任务计划远程备份mysql数据库
Shell变量的作用、类型,及如何利用脚本配合任务计划远程备份mysql数据库
199 0
Shell变量的作用、类型,及如何利用脚本配合任务计划远程备份mysql数据库
|
Web App开发 前端开发 JavaScript
vbs学习,书籍,看书笔记(5) 客户端web脚本 .Power shell 使用 脚本文件的类型2
vbs学习,书籍,看书笔记(5) 客户端web脚本 .Power shell 使用 脚本文件的类型2
vbs学习,书籍,看书笔记(5) 客户端web脚本 .Power shell 使用 脚本文件的类型2
|
Shell
识别Shell环境类型
识别Shell环境类型
155 0
识别Shell环境类型
|
Shell
shell脚本编程-类型变量
shell脚本编程-类型变量
140 0
|
18天前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
252 9
|
18天前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
102 2
|
4月前
|
Shell
Shell脚本循环控制:shift、continue、break、exit指令
使用这些命令可以让你的Shell脚本像有生命一样动起来。正确使用它们,你的脚本就能像一场精心编排的舞蹈剧目,既有旋律的起伏,也有节奏的跳跃,最终以一场惊艳的表演结束。每一个动作、每一个转折点,都准确、优雅地完成所需要表达的逻辑。如此,你的脚本不只是冰冷的代码,它透过终端的界面,跳着有节奏的舞蹈,走进观众——使用者的心中。
211 60