什么是shell?

news/2024/10/3 8:28:57

使用Mac系统的朋友应该比较熟悉Zsh和Bash这两个shell,但是对二者具体有什么区别可能不太了解。本文将从这两个shell入手,对相关概念以及二者区别进行解释。

1.什么是shell?

shell 单词的本意是“壳子”,在计算机领域一样可以理解为机器外面的一层壳,目的是进行用于人机交互,本质上是命令解释器。只要是人与电脑之间交互的接口,就可以称为 shell。
需要说明的是,常见的概念包括shell脚本,其指的是采用shell语言编写的脚本,可以使用shell程序来进行执行,而本文所说的shell均指的是shell程序。二者之间的关系可见下图:

2.有哪些shell?

  1. zsh
    很多人的 mac 中会使用 zsh 而不是 bash,一大半是因为 oh-my-zsh 这个配置集,它兼容 bash,还有自动补全等好用的功能。
  2. sh
    sh的全称是 Bourne shell,由 AT&T 公司的 Steve Bourne开发,为了纪念他,就用他的名字命名了。sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 shell。
  3. csh
    sh 之后另一个广为流传的 shell 是由柏克莱大学的 Bill Joy 设计的,这个 shell 的语法有点类似C语言,所以才得名为 C shell ,简称为 csh。
  4. tcsh
    tcsh 是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持。
  5. ash
    ash是一个简单的轻量级的 Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。
  6. bash
    bash是基于GUN架构开发的,开发者叫史蒂芬博恩,是BourneAgain Shell的缩写。保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。bash 兼容 sh 意味着,针对 sh 编写的 shell 代码可以不加修改地在 bash 中运行。尽管如此,bash 和 sh 还是有一些不同之处:一方面,bash 扩展了一些命令和参数;另一方面,bash 并不完全和 sh 兼容,它们有些行为并不一致,但在大多数企业运维的情况下区别不大,特殊场景可以使用 bash 代替 sh。

3.怎么查看自己使用的是哪一个shell?

在现代的 Linux 上,sh 已经被 bash 代替,/bin/sh往往是指向/bin/bash的符号链接。如果你希望查看当前 Linux或MacOS的默认shell,那么可以输出 shell 环境变量:

echo $SHELL

如果想知道自己系统安装了哪些shell,使用如下命令可得到如下所示的信息。

cat /etc/shells

4. shell如何配置?

如上所说,shell 在启动时都会去找配置文件,然后运行它。你安装的一些脚本,如果想让它能够全局运行,就需要在配置文件中设置路径。有过设置路径后还是不管用的经历吗?多半是因为把配置写在了错误的配置文件里。* 应该在配置shell(最常见的是配置默认命令)之前,使用 echo $SHELL,确认自己现在用的是什么shell后,再去编辑对应的配置文件 *。

5. bash和zsh的区别

一句话,二者均是shell的一种,zsh能基本完美兼容bash的命令,并且使用起来更加优雅。由于bash或zsh本质上都是解释器,他们所共同服务的是shell语言,因此在命令语法上基本相同,部分兼容性会有一些差异

二者切换:

  • 切换bash: chsh -s /bin/bash
  • 切换zsh: chsh -s /bin/zsh
  • 在终端app的系统偏好设置里手动设置。

在配置文件方面:

  • bash读取的配置文件:~/.bash_profile文件
  • zsh读取的配置文件:~/.zshrc文件

当从bash切换为zsh时,如果不想重新配置一遍.zshrc文件,可以__在.zshrc文件中加上source ~/.bash_profile,从而直接从.bash_profile文件读取配置。

mac修改默认shell为bash

  1. 打开系统偏好设置

  2. 点击用户群组

  3. 按住ctrl,点击用户名

  4. 点击高级选项,修改登录shell

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/44655.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

linux或者CentOS环境下安装.NET Core环境

一、下载 注册Microsoft密钥:在安装之前,需要: 1、注册Microsoft密钥 2、注册产品资料库 3、安装所需的依赖项打开终端并输入命令: sudo rpm -Uvh https://packages.microsoft.com/config/centos/8/packages-microsoft-prod.rpm安装效果如下图所示:安装期间会提示用户验证…

AUTOSAR平台中的信息安全标准模块

目前,经纬恒润已为国内多家客户提供汽车网络安全开发及测试服务,打造车联网可信安全平台,为智能网联汽车安行之路保驾护航!面向MCU端的AUTOSAR CP平台加密组件——CryptoECU中所有的软件单元都遭受到信息安全攻击的可能。AUTOSAR为保障ECU信息和数据安全,定义了CRYPTO 组件…

如何通过一张图片判断摄影师的位置(图片经纬度转换)

目录通过图片属性中的经纬度计算拍照的位置(其实就是经纬度计算转换)一、 查看图片经纬度信息(只有原文件且拍照时开启了GPS才能看到这个信息)二、 通过经纬度计算地理位置三、 获得精确经纬度,在地图查询经纬度查询经纬度的链接 通过图片属性中的经纬度计算拍照的位置(其…

数仓实践-元数据

1.元数据:关于数据的数据 2.元数据分类:主题域英文名称主题域前缀描述成本域costcost表和目录的存储消耗,任务的计算资源消耗。权限域authorityauthdataworks数据访问权限申请记录,冗余权限统计。任务域tasktaskdataworks任务,MC上的application。查询域queryquery各个查询…

7、docker-commit镜像、将容器打包成一个镜像

#docker  commit  提交容器成为一个新的副本 #docker commit  -m="提交的描述信息"  -a="作者"  容器id  目标镜像名:[TAG] =========================================== 测试: 1、启动tomcat启动:docker run -it -p 8080:8080 tomcat  …

9、docker-mysql容器数据同步到本机-挂载

1、查看镜像、下载镜像docker search mysqldocker pull mysql:5.7    //指定下载5.7版本 2、启动镜像 -d  后台运行-p  端口映射  主机端口:容器端口-v  卷挂载-e  环境配置  这里配置的是数据库的密码--name    容器名字docker run -d -p 3310:3306 -v /…

c/c++设计模式--备忘录模式

#include <iostream> #include <vector>#ifdef _DEBUG //只在Debug(调试)模式下 #ifndef DEBUG_NEW #define DEBUG_NEW new(_NORMAL_BLOCK,__FILE__,__LINE__) //重新定义new运算符 #define new DEBUG_NEW #endif #endif//#include <boost/type_index.hpp&g…

超级底层:10WQPS/PB级海量存储HBase/RocksDB,底层LSM结构是什么?

文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 实现技术自由,…