重新点亮shell————什么是shell[一]
前言
这里简介一下什么是shell。 写linux和shell 系列是为了后面的docker 系列的整理,本来想直接整理k8s的,但是呢,想想docker 系列整理完了的话,那么整理k8s系列就没有那么多的文章需要引用,直接引用自己的随笔即可。
正文
shell 是命令解释器,用于介绍用户对操作系统的操作。
介绍shell 之前,来看一下linux的启动过程。
启动过程:
BIOS-MBR(识别硬盘是否可引导)-BootLoader(grub,选择内核和内核版本)-kernel-systemd-系统初始化 shell
也就是说这个shell只要是我们内核启动了,那么shell 实际上就是可以使用的。
首先shell 有很多种。
一般来说我们使用的是bash。
Bash,Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4都将它作为默认shell。
现在我们知道了shell了,那么什么是shell脚本呢?
-
unix 的哲学: 一条命令只做一件事情
-
为了组合命令和多次执行,使用脚本文件来保存需要执行的命令
-
赋予该文件执行权限(chmod u+rx filename)
shell 脚本其实就是保存shell 命令的脚本。
那么还有一个问题,前面提及到shell 有很多种。
一般默认是bash,但是有些系统中默认不是bash,可能是sh,那么怎么办呢?
这个时候shell 命令脚本前面会加一个声明式:
#! /bin/bash
那么指定了声明方式后,那么执行方式也有很多种,大体分为四种。
-
bash ./filename.sh
-
./filename.sh
-
source ./filename.sh
-
.filename.sh
第一种呢,就直接是bash命令执行了,这个时候不管上面声明了什么,声明部分当做注释,直接是bash执行。
同样这种情况下,我们指定如果没有执行权限的话,那么shell脚本不会运行,但是在bash命令下,脚本不需要可执行权限。还有一个区别就是bash运行脚本命令是在另外一个子进程中执行的。
第二种呢,会直接查看声明来执行,声明了什么就什么来执行,同样是另外一个子进程执行的。
第三种和第四种其实是一样的,声明了什么就什么来执行,是在当前进程执行的。
同样的,我们前面提及的内建命令和外部命令的时候,内建命令不需要创建子进程,也就是说内建命令对当前的shell生效。
结
现在理解shell脚本了,下面正式进入shell环节。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2019-12-19 android:Program type already present: android.support.v4.app.INotificationSideChannel