Linux学习笔记-------shell的基本知识和执行方式

本文详细介绍了Shell作为命令解释器的角色,包括其在Linux系统中的作用,shell的分类如图形界面shell和命令行shell,以及交互式与非交互式shell的工作模式。重点讲解了shell脚本的概念、优点及其执行方式,包括sh、chmod、source和.命令的不同应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是shell?

        shell其实是一个命令解释器,它的作用是解释用户输入的命令和程序,命令和程序可以理解成我们图中的应用程 序,我们linux系统中的那些命令其实也都是一个个的小程序,只不过完成的是系统的应用功能。我们在系统的终端中输入一条命令,可以立马看到一条或者几 条系统回复我们的信息,其实就是shell在帮我们回复,所以shell可以称之为命令解释器。这种从键盘一输入命令,就可以立马得到相应的回复信息,叫 作交互的方式,相当于我们在和电脑交流。Shell存在于系统的最外层,所以算作操作系统的外壳,它之外的应用程序就不能算作操作系统了。我们从输入系统的账户密码开始,到登录系统以后的所有操作都是shell在帮我们解释执行的。

基本上shell分两大类:

一:图形界面shell(Graphical User Interface shell 即 GUI shell)

例如:应用最为广泛的 Windows Explorer (微软的windows系列操作系统),还有也包括广为人知的 Linux shell,其中linux shell 包括 X window manager (BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KDE、 XFCE。

二:命令行式shell(Command Line Interface shell ,即CLI shell)

例如:

bash / sh / ksh / csh(Unix/linux 系统)

交互式shell和非交互式shell

  1. 交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。
  2. shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。

什么是shell脚本?

        如果我们的命令或者应用程序不在命令行直接执行,而是通过一个程序文件来执行时,这个程序就被称之为shell 脚本。Shell脚本里面通常内置了多条命令,有的还包含控制语句,比如if和else的条件控制语句,for和select的循环控制语句等。这些内置 在一个shell脚本中的命令通常是一次性执行完成,不会不停的返回信息给用户,这种通过文件执行脚本的方式是非交互方式。

为什么要使用shell脚本?

       使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。或者可以归纳成以下三点:

  • 简单性:Shell是一个高级语言;通过它,你可以简洁地表达复杂的操作。
  • 可移植性:使用POSIX所定义的功能,可以做到脚本无须修改就可在不同的系统上执行。
  • 开发容易:可以在短时间内完成一个功能强大又妤用的脚本

shell脚本的执行方式

最常见的脚本执行方式sh /mnt/test.sh,shell会开启一个子程序执行脚本

适用范围:脚本文件本身没有可执行权限(即文件权限属性x位为-号),或者脚本文件开头没有指定解释器时需要使用的方法。

或者chmod +x /mnt/test.sh给sh权限,直接运行脚本的幻数

适用范围:脚本有执行权限,允许调用子程序执行脚本

/mnt/test.sh=./test.sh,也可以用./test.sh执行

source /mnt/test.sh  这种执行方式不会开启任何子程序

适用范围:加载并执行的相关脚本文件的命令及语句,而不是产生一个子Shell来执行文件中的命令

source test.sh=. test.sh,同样用. test.sh也不会开启任何子程序

shell脚本执行方式的区别(面试题):

题目:a=1,如何在脚本中直接调用a

我们对比了一下五种脚本运行方式,发现只有source test.sh和. test.sh两种运行方式可以输出a的值

这是因为source test.sh和. test.sh是在当前shell里面运行的没有调用子程序,所以它们可以获取a的值

而其它shell脚本运行方式都调用了子程序执行脚本,所以无法获取当前shell里a的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值