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

目录
相关文章
|
4月前
|
存储 Shell Linux
【Shell 命令集合 系统设置 内建命令】⭐Linux 声明变量的属性和类型 declare命令 使用指南
【Shell 命令集合 系统设置 内建命令】⭐Linux 声明变量的属性和类型 declare命令 使用指南
65 0
|
4月前
|
存储 Shell Linux
【Shell 命令集合 网络通讯 】⭐Linux 显示当前系统的主机名和操作系统类型 uuname命令 使用教程
【Shell 命令集合 网络通讯 】⭐Linux 显示当前系统的主机名和操作系统类型 uuname命令 使用教程
54 0
|
Ubuntu Shell
Ubuntu用数组统计用户shell类型及对应数量
Ubuntu用数组统计用户shell类型及对应数量
97 0
|
SQL 机器学习/深度学习 关系型数据库
Shell变量的作用、类型,及如何利用脚本配合任务计划远程备份mysql数据库
Shell变量的作用、类型,及如何利用脚本配合任务计划远程备份mysql数据库
138 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环境类型
94 0
识别Shell环境类型
|
Shell
shell脚本编程-类型变量
shell脚本编程-类型变量
92 0
|
16天前
|
Shell
Shell脚本有哪些基本语法?
【9月更文挑战第4天】
37 17
|
16天前
|
存储 Unix Shell
shell脚本编程基础
【9月更文挑战第4天】
30 12
|
14天前
|
网络协议 关系型数据库 MySQL
Shell 脚本案例
Shell 脚本案例
28 8