[Linux] 什么是 Shell?
一、什么是 shell ?
shell在英语中的意思就是外壳,所以我们习惯称shell程序为壳程序。那为什么又会被叫做壳程序呢?那是因为shell程序是在内核上面的,属于操作系统的外壳部分,因此我们就称之为壳程序(shell)。
在 Linux 中,Shell 是一个命令行解释器,它充当用户与操作系统之间的接口。Shell 允许用户通过命令行输入各种指令来控制操作系统。它是用户与 Linux 内核之间的一种交互层,可以接受用户的命令输入,解析这些命令,并将它们传递给相应的系统服务或应用程序进行处理。
Shell 不仅提供了一个命令行界面,还支持脚本编程,即可以编写包含一系列命令的脚本文件,Shell 能够读取并执行这些脚本。常见的 Linux Shell 包括 Bash(Bourne Again SHell)、sh(Bourne Shell)、csh(C Shell)和 zsh(Z Shell)等。
Bash 是最常用的 Shell,在大多数 Linux 发行版中作为默认 Shell 提供。它提供了丰富的功能,如命令历史、别名定义、命令行编辑能力以及复杂的脚本语言支持。
二、shell的历史
Shell 的历史始于早期的 Unix 操作系统,随着 Unix 的发展,Shell 也经历了多个重要的演变阶段。1971 年左右,Ken Thompson 开发了第一个 Unix Shell,后来被称为 Thompson shell 或 sh。1978 年,Stephen Bourne 在贝尔实验室开发了 Bourne shell,它成为了 Unix 标准 Shell,并且被广泛采用。随后,1989 年 Brian Fox 开发了 Bourne Again Shell (bash),旨在兼容 Bourne shell 并添加更多功能,Bash 成为了 GNU 项目的一部分,并且是大多数现代 Linux 发行版的默认 Shell。同年,Bill Joy 开发了 C Shell (csh),它采用了类似于 C 语言的语法,使得脚本编写更为直观。1982 年,David Korn 在 AT&T 开发了 Korn shell (ksh),它结合了 Bourne shell 和 C Shell 的优点,并增加了许多新特性。此外,还有 TC Shell (tcsh),它是 C Shell 的一个增强版本;Z Shell (zsh),这是一个高度可配置的 Shell,具有强大的功能集和高级的编辑能力;以及 Fish (fish),这是一个较新的 Shell,设计时考虑到了易用性和用户友好性。每个 Shell 都有自己的特点和优势,可以根据个人喜好或特定需求选择合适的 Shell 使用。
下面是几种常用流行的shell:
1、Bourne Shell (sh):
- 最初由 Stephen Bourne 在 1978 年开发。
- 是许多 Unix 系统中的默认 Shell。
- 提供了基本的命令行功能,但缺少一些现代 Shell 的高级特性。
2、Bourne Again Shell (bash):
- 由 Brian Fox 在 1989 年开发,是 GNU 项目的一部分。
- 在大多数 Linux 发行版中作为默认 Shell 提供。
- 支持命令历史、别名定义、命令行编辑能力以及复杂的脚本语言。
3、C Shell (csh):
- 由 Bill Joy 在 1978 年开发。
- 采用了类似于 C 语言的语法,使得脚本编写更为直观。
- 在某些系统中使用,但不如 bash 流行。
4、Korn Shell (ksh):
- 由 David Korn 在 1982 年开发。
- 结合了 Bourne shell 和 C Shell 的优点,并增加了许多新特性。
- 在许多商业 Unix 系统中被广泛采用。
5、Z Shell (zsh):
- 是一个高度可配置的 Shell,具有强大的功能集和高级的编辑能力。
- 虽然不是默认 Shell,但对于那些寻求更高级特性和定制选项的用户来说是一个很好的选择。
6、Fish (fish):
- 是一个较新的 Shell,设计时考虑到了易用性和用户友好性。
- 特别适合新手用户,因为它提供了自动补全等功能。
这些 Shell 中,bash 是最为广泛使用的,几乎所有的 Linux 发行版都将它设置为默认 Shell。bash 提供了丰富的功能和良好的向后兼容性,使其成为大多数用户的首选。
三、 查看可用的shell
要查看系统中已安装的 Shell,我们可以检查 /etc/shells
文件,该文件包含了系统中所有合法的 Shell 的列表。
cat /etc/shells
这将列出系统中所有合法的 Shell。通常,您会看到类似这样的输出:
/bin/sh
/bin/false
/bin/bash
/bin/zsh
/bin/dash
这些是 Ubuntu 20.04 中预装的一些 Shell。如果您想要安装其他 Shell(如 ksh 或 fish),可以使用包管理器进行安装。例如,要安装 ksh
和 fish
,可以使用以下命令:
sudo apt update
sudo apt install ksh fish
如果您想要更改默认 Shell,可以使用 chsh
命令来指定一个新的 Shell。例如,要将默认 Shell 更改为 zsh
,可以使用以下命令:
chsh -s /bin/zsh
四、获取 Bash 的帮助文档
Bash(Bourne Again SHell)是 Linux 和 Unix 系统中最常用的 Shell。Bash 是一个命令行解释器,它提供了用户与操作系统交互的界面。Bash 是 GNU 项目的一部分,它旨在兼容原始的 Bourne shell (sh
) 并添加了许多增强功能,如命令历史、别名定义、命令行编辑能力以及复杂的脚本语言支持。
Bash 的官方文档和手册页是获取详细信息的最佳来源。以下是访问这些资源的方法:
1、在线手册页:
- 使用
man bash
命令查看 Bash 的手册页。这将打开 Bash 的手册页,其中包含了详细的说明和示例。
2、官方文档:
- 访问 Bash 的官方网站,获取最新版本的手册和文档。
- 网址: Bash Reference Manual
- 这里提供了详尽的文档,涵盖了 Bash 的所有特性和用法。
3、info 系统:
- 使用
info bash
命令来访问 Bash 的 info 文档。Info 系统提供了更详细的文档和交叉引用。
4、在线社区和论坛:
- 在线社区如 Stack Overflow 和 Unix & Linux Stack Exchange 提供了大量的 Bash 相关问题和解答。
五、查询命令是否为 Bash shell 的内置命令: type
要检查一个命令是否为 Bash shell 的内置命令,我们可以使用 type
命令。type
命令可以帮助我们确定一个命令是 shell 的内置命令、外部命令还是函数。
如果我们想检查 cd
是否为 Bash 的内置命令,我们可以使用以下命令:
type cd
如果 cd
是一个内置命令,输出将会显示类似于这样的结果:
cd is a shell builtin
如果命令不是一个内置命令,而是外部命令或者脚本,则输出会有所不同。例如,对于 ls
命令:
type ls
输出可能会显示类似于这样的结果:
ls is /bin/ls
示例
现在让我们使用 type
命令来检查 type
命令本身是否为 Bash 的内置命令:
type type
这将返回如下输出,表明 type
是一个内置命令:
type is a shell builtin
使用
type
命令可以轻松地检查一个命令是否为 Bash shell 的内置命令。我们只需输入type <command>
即可,其中<command>
是我们想要检查的命令名。如果输出显示 “is a shell builtin”,则该命令是内置的;否则,它可能是外部命令或脚本。
相关文章:
![](https://i-blog.csdnimg.cn/direct/4a070d73c6cc4f0dadd7009fd74647a7.png)
[Linux] 什么是 Shell?
一、什么是 shell ? shell在英语中的意思就是外壳,所以我们习惯称shell程序为壳程序。那为什么又会被叫做壳程序呢?那是因为shell程序是在内核上面的,属于操作系统的外壳部分,因此我们就称之为壳程序(shell)。 在 Linux 中&#…...
![](https://img-blog.csdnimg.cn/img_convert/80223e4ca111a0b515d3bd82927a8a4d.png)
大模型学习应用 2:快速上手大模型基于langchain实现RAG检索应用
快速上手大模型基于langchain实现RAG检索应用 - 项目作业 目录 准备工作镜像选择算力选择安装包数据说明提示参考链接 Task1 申请 api 后,使用 langchain 导入大模型,并打印出大模型信息Task2 使用 langchian 加载数据,并把数据打印出来Task…...
![](https://i-blog.csdnimg.cn/direct/0f0eb589e85f482892f320ebe9da790d.png)
python环境安装之后,cmd输入python回车会打开微软商店
坑爹!python环境安装之后,cmd输入python回车会打开微软商店 最近发现,安装python环境成功之后,可能会出现cmd输入python验证是否安装成功老会打开微软商店! 解决,打开系统环境配置,找到刚安装…...
![](https://i-blog.csdnimg.cn/direct/efdce504c6bf4797b21ae62db8726754.png)
USB Type-C如何取9V、12V、15V、20V电压-PD快充协议芯片ECP5701
相信大家在生活中也发现了,现在越来越多的设备都改用这种type-C接口的母座进行取电了。 因为欧盟决议 :自2024年起部分消费电子产品必须提供单一的USB-C充电接口。 那么这种type-C接口相比之前的Micro-B接口有着一个很大的优势就是可以有更高的电压&…...
![](https://www.ngui.cc/images/no-images.jpg)
Go 语言 Map 17
Go 语言提供了一个强大的 Map 结构体,用于存储键值对。Map 可以用来存储数据,快速查找和修改数据。下面是 Go 语言 Map 的使用教程。 什么是 Map? Map 是一个键值对的集合,它可以存储任意类型的键和值。Map 中的每个键都是唯一的…...
![](https://www.ngui.cc/images/no-images.jpg)
移植bash到openharmony
1.交叉工具链 下载地址: http://ci.openharmony.cn/workbench/cicd/dailybuild/dailylist 进入ohos-sdk-full,下载一个sdk版本,这里下载的版本是version-Master_Version-OpenHarmony_5.0.0.35-20240805_020232-ohos-sdk-full.tar.gz。 解…...
![](https://www.ngui.cc/images/no-images.jpg)
git stash详细教程
git stash详细教程 基本命令: git stash: 保存当前未提交的更改,并恢复到干净的工作目录。git stash list: 列出所有的 stash。git stash show: 显示最新 stash 的简要内容。git stash show -p: 显示最新 stash 的详细内容。 应用和删除: git stash apply: 应用最新…...
![](https://www.ngui.cc/images/no-images.jpg)
UDP网络攻击
UDP(User Datagram Protocol)作为一种无连接的网络传输协议,以其速度快和资源消耗小的特点,在多种网络服务中发挥着重要作用,UDP的无连接特性也使其成为DDoS攻击的优选协议。 UDP攻击概念 UDP攻击是一种网络攻击手段…...
![](https://img-blog.csdnimg.cn/img_convert/620aa290ef284b9892b608eda945fed4.png)
漏洞扫描的重要性,如何做好漏洞扫描服务
随着互联网技术的飞速发展,网络安全问题已成为不容忽视的重大挑战。其中,系统漏洞威胁作为最常见且严重的安全危险之一,对组织和个人的信息资产构成了巨大威胁。下面我们就来了解下漏洞扫描的好处、漏洞扫描的操作方法以及如何做好网络安全。…...
![](https://i-blog.csdnimg.cn/direct/8324140a47c44e3584a951bb84d99e61.png)
unity程序简易框架
1. 框架基本结构 2. 单例模式基类模块 2.1 BaseManager.cs using System.Collections; using System.Collections.Generic; using UnityEngine;public class BaseManager<T> where T:new() {private static T instance;public static T GetInstance(){if (instance == …...
![](https://img-blog.csdnimg.cn/img_convert/abed90a659b0271e03f18f0546d84622.png)
Go小技巧易错点100例(十六)
本期看点: 正文开始: 切片的长度和容量 在Go语言中,切片(slice)是一个引用类型,它是对底层数组的抽象表示,提供了动态长度的、灵活的序列类型。切片包含三个重要的属性:指向底层数…...
![](https://www.ngui.cc/images/no-images.jpg)
通过Golang实现中间人攻击,查看和修改https流量包
要查看和修改 HTTPS 流量包,需要使用一个能够执行 中间人攻击(Man-in-the-Middle, MITM) 的代理工具。这个工具将拦截并解密 HTTPS 流量,然后允许查看和修改流量包的内容,再将其重新加密并发送到目标服务器。 完整的 …...
![](https://www.ngui.cc/images/no-images.jpg)
MySQL 安装与配置指南
MySQL 是一种广泛使用的关系型数据库管理系统,为各种应用程序提供高效的数据存储和管理解决方案。本文将介绍如何在不同的操作系统中安装 MySQL,以及如何进行基本的配置,以确保数据库系统的最佳性能和稳定性。 一、环境准备 1.1 系统要求 …...
![](https://i-blog.csdnimg.cn/direct/ca8c4b8bed3846698ad4517c405438ad.jpeg)
android13布局查看工具 无源码查看布局 在线查找ui布局id
总纲 android13 rom 开发总纲说明 目录 1.前言 2.工具介绍 2.1工具1 2.2工具2 2.3工具3 2.4工具4 3.彩蛋 1.前言 Android 13提供了一些工具来帮助开发人员查看和优化应用的布局。方便的让我们找到具体应用的布局文件等信息。 2.工具介绍 2.1工具1 老版本DDMS&#x…...
![](https://i-blog.csdnimg.cn/direct/86a1692352e24a738bafa83664f6e9c1.png)
【自动化测试必学语言】python:UnitTest框架
目录 介绍 框架 什么是UnitTest框架? 为什么使用UnitTest框架? UnitTest核心要素(unitest 的组成部分) 1.TestCase(最核心的模块) 2.TestSuite 3.TestRunner 4.TestLoader 5.Fixture TestCase(…...
![](https://i-blog.csdnimg.cn/direct/b7916edd62554562895261bc49968d0a.png)
大话LLM之向量数据库
向量数据库是一种专门设计的存储系统,旨在高效处理和查询高维向量数据,通常用于人工智能和机器学习应用中,以实现快速准确的数据检索。 好的,今天我们就来聊聊人工智能和向量数据库的事儿。现在人工智能发展得特别快,特…...
![](https://i-blog.csdnimg.cn/direct/157c3cde817745769587d1df61c846d6.png)
EmguCV学习笔记 C# 2.2 Matrix类
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 EmguCV学习笔记目录 Vb.net EmguCV学习笔记目录 C# 笔者的博客网址:VB.Net-CSDN博客 教程相关说明以及如何获得pdf教…...
![](https://www.ngui.cc/images/no-images.jpg)
[Windows CMD] 查看网络连接状态 netstat -na | findstr “TCP“
在 Windows 系统中,我们可以使用 netstat 命令来查看网络连接状态,并使用 findstr 命令来过滤出 TCP 和 UDP 的连接。 查看所有网络连接的状态 netstat -na netstat -na: 显示所有网络连接的状态,-n 表示显示数字地址而非域名,…...
![](https://img-blog.csdnimg.cn/img_convert/c5fe7f30be1835c36d7c6650c16bdaac.png)
「OC」视图控制器的懒加载策略
「OC」视图控制器的懒加载策略 文章目录 「OC」视图控制器的懒加载策略懒加载懒加载的优点常见的懒加载实现方法使用懒加载的注意事项 控制器的懒加载参考资料 懒加载 懒加载(Lazy Loading)是一种设计模式,其核心思想是在需要时才进行对象的…...
![](https://www.ngui.cc/images/no-images.jpg)
android studio 中 .gitignore 文件改动后 忽略的文件夹或文件无效
问题原因:已跟踪文件的缓存问题: 如果之前已经跟踪了这些文件(即它们已经被 Git 加入到版本控制中),即使你在 .gitignore 文件中添加了忽略规则,Git 仍然会显示这些文件。你需要先从 Git 中移除这些文件&am…...
![](https://www.ngui.cc/images/no-images.jpg)
鸿蒙 next 实现摄像头视频预览编码(一)
鸿蒙 next 即将发布,让我们先喊3遍 遥遥领先~ 遥遥领先~ 遥遥领先~ 作为一门新的系统,本人也是刚入门学习中,如果对于一些理解有问题的,欢迎即使指出哈 首先这里要讲一下,在鸿蒙 next 中,要实现摄像头预览…...
![](https://i-blog.csdnimg.cn/direct/f75bcb2e33a04a3ea9184cbf350da95e.png)
YOLO-V3
一、概述 最大的改进就是网络结构,使其更适合小目标检测特征做的更细致,融入多持续特征图信息来预测不同规格物体先验框更丰富了,3种scale,每种3个规格,一共9种softmax改进,预测多标签任务 先验框…...
![](https://www.ngui.cc/images/no-images.jpg)
golang提案,内置 Go 错误检查函数
先来狠狠吐个槽 要吐槽 Go1 的 error ,那咱得先整明白大家为啥都猛喷它的错误处理做得不咋地。在 Go 语言里头,error 本质上其实就是个 Error 的接口: type error interface {Error() string }实际的应用场景如下: func main()…...
![](https://www.ngui.cc/images/no-images.jpg)
零售业务产品系统应用架构设计(三)
智慧物业依据《住房和城乡建设部等部门关于推动物业服务企业加快发展线上线下生活服务的意见建房〔2020〕99号》,推动物业管理公司广泛运用5G、互联网、物联网、云计算、大数据、区块链和人工智能等技术,建设智慧物业管理服务平台,对接城市信息模型(CIM)和城市运行管理服务…...
![](https://i-blog.csdnimg.cn/direct/fc1396346be7422eb4fdab58fb2d2f05.png)
【GD32】从零开始学GD32单片机 | PMU电源管理单元+深度睡眠和待机例程(GD32F470ZGT6)
1. 简介 PMU电源管理单元通俗讲就是用来管理MCU的电源域的,它主要有两个功能——电压监测和低功耗管理。在GD32中一共有3个电源域——VDD/VDDA域、1.2V域和备份域。 VDD/VDDA域主要供PMU控制器、ADC、DAC等外设使用;1.2V域就是大部分外设都会使用的电源域…...
![](https://i-blog.csdnimg.cn/direct/74f8ba1cabf54e46a88a28995917c079.png)
公司员工电脑桌面太乱如何解决?桌面管理软件一招解决!
“工欲善其事,必先利其器。” 在数字化管理的时代背景下,选择合适的桌面管理软件就如同为企业网络管理装上了一双慧眼。 员工的电脑桌面往往因为长时间的使用而变得杂乱无章,这不仅影响了工作效率,还可能给企业信息安全带来隐患。…...
![](https://i-blog.csdnimg.cn/direct/7b14c05361384c68a678c629bbdee879.png)
leetcode:2119. 反转两次的数字(python3解法)
难度:简单 反转 一个整数意味着倒置它的所有位。 例如,反转 2021 得到 1202 。反转 12300 得到 321 ,不保留前导零 。 给你一个整数 num ,反转 num 得到 reversed1 ,接着反转 reversed1 得到 reversed2 。如果 reverse…...
![](https://i-blog.csdnimg.cn/direct/291283ccc6f1434eaaad4c3b4d58c347.png)
5.vue中axios封装工程化
vue工程化中axios封装 视频演示地址:https://www.bilibili.com/video/BV121egeQEHg/?vd_source0f4eae2845bd3b24b877e4586ffda69a 通常我们封装需要封装request.js基础的发送请求工具类,再根据业务封装service类,service类是具体业务的接口…...
![](https://i-blog.csdnimg.cn/direct/1423e7e1295845ad81d098bca70ae48b.png)
实验六:动态数码管实验
实验结果图,从右到左0-7,从左到右7-0,来回滚动。 硬件接线图: 具体看图,不说了,前面讲过,自己查资料就可以,资料得慢慢查,熟练就好了,不浪费时间和版面了 main.c代码 #include<reg52.h>typedef unsigned int u16; typedef unsigned char u8;#define SMG P0 …...
![](https://img-blog.csdnimg.cn/img_convert/f667939a92048060e09d26ebf0adfd01.png)
《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 05网络虚拟化
本章帮助网络工程师或架构师回答如下问题: 什么是网络虚拟化?网络虚拟化有哪些用途?网络虚拟化领域内有哪些不同的技术方向?网络虚拟化的控制面有哪些选择?当使用 VXLAN 时如何进行桥接和路由? 什么是网络虚拟化? 网络虚拟化可以让网络…...
![](https://img-blog.csdnimg.cn/1020b9ba44d9482885002b8d681b3ee8.png)
网站建设官方商城/百度推广怎么收费标准
总览概述 多路IO转接服务器也叫做多任务IO服务器。该类服务器实现的主旨思想是,不再由应用程序自己监视客户端连接,取而代之由内核替应用程序监视文件。 主要使用的方法有三种:select poll epoll select 多路IO转接 原理…...
![](https://img-blog.csdnimg.cn/img_convert/a6a744edd351cb3debff2687b84f11ac.png)
江苏企业网站定制服务/免费发外链
一、首先安装 MySQL1. 安装前更新一下仓库,输入命令:sudo apt-get updatealgerfanalgerfan:~$ sudo apt-get autoremove --purge mysql-server-5.72. 输入命令:sudo apt-get install mysql-server mysql-client安装MySQL数据库程序和命令行管…...
做交流网站/优化大师官网下载
jsp有四种范围,可以说是四种对象,这四种对象对应不同的作用范围,所以我们说jsp中的四种范围,这四种范围作用域由大到小分别是page>request>session>application 利用这四个对象最常用的就是传值,在一个地方设…...
![](/images/no-images.jpg)
网站建设合同付款方式/郑州seo排名哪有
PaaS选择多多 首先,我想我们恐怕需要给平台即服务(PaaS)下个定义。PaaS环境是云计算服务平台,让开发人员可以构建并管理其Web应用程序,没必要面临基础设施的搭建和维护带来的复杂性。 或者换而言之:PaaS平台…...
![](https://img-blog.csdnimg.cn/img_convert/bcf8afc2f8cbb4bcd336a41271a113c8.png)
300m空间够用吗 wordpress/深圳专业seo
noVNC介绍VNC的客户端很多,比如VNC Viewer、TightVNC、RealVNC、UltraVNC等VNC的客户端,可以使用SSH以及VNC的方式来登录及管理QEMU、KVM、libvirt虚拟机, 那有没有通过Web的方式去登录及管理QEMU、KVM、libvirt虚拟机呢,noVNC就是其中一种方…...
![](https://img-blog.csdnimg.cn/20201101204213119.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzMTYyNQ==,size_16,color_FFFFFF,t_70)
北京网站建设公司网络营销外包网络建站报价/企业seo优化
java 动态规划(三角形最短路径和) ************************** 三角形最短路径和 问题描述 给定一个三角形,找出自顶向下的最小路径和 每一步只能移动到下一行中相邻的结点上(相邻节点:索引相同、索引1)示例: [[2],[…...