当前位置: 首页 > news >正文

简单说说关于shell中zsh和bash的选择

希望文章能给到你启发和灵感~
如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏 支持一下博主吧~

阅读指南

  • 开篇说明
  • 一、基础环境说明
    • 1.1 硬件环境
    • 1.2 软件环境
  • 二、什么是shell、bash、zsh?
    • 2.1 bash
    • 2.2 zsh
  • 三、选择 Bash 还是 Zsh?
  • 四、一些常见问题

开篇说明

本篇主要简单说明一下,shell中bash和zsh的区别和选择;我们经常会把这两个搞混,不知道什么时候用哪一个,以及怎么使用;

一、基础环境说明

考虑环境因素,大家适当的对比自己的软硬件环境情况分析~请仔细阅读硬件、软件环境

1.1 硬件环境

MacOS Monterey 版本 12.6.8 Apple M1

1.2 软件环境

二、什么是shell、bash、zsh?

Shell 是一种命令行界面(CLI),允许用户与操作系统进行交互。Bash(Bourne Again SHell)Zsh(Z Shell)是两种流行的 Unix shell,它们各自提供了强大的功能和灵活性,以满足不同用户的需求和偏好。说的简单一些,就是我们在shell中写一些函数,以及各种脚本代码来实现和操作的系统的交互;

2.1 bash

Bash 是大多数 Linux 发行版和 macOS 默认的 shell 之一。它是 Bourne Shell(sh)的一个增强版本,提供了许多改进的功能和扩展。Bash 因其广泛的可用性和兼容性而广受欢迎,是学习 shell 编程时的一个很好的起点。

Bourne Shell就是我们常说的sh,那什么是sh?我们可以把它简单的理解为是所有shell的基础,许多现代的shell都是借鉴sh来编写的,举一个sh简单的一个例子:

#!/bin/sh
# This is a simple script that prints "Hello World!"echo "Hello World!"

在这个示例中,#!/bin/sh 是脚本的 shebang 行,它告诉系统使用哪个解释器来执行此脚本(这里是 /bin/sh,即 Bourne Shell)。接下来的注释行和 echo 命令则是脚本的实际内容。

2.2 zsh

Zsh 是一个功能强大的 shell,旨在提供比 Bash 更高级的用户体验和增强的功能。Zsh 在许多方面都比 Bash 更灵活和强大,但它可能不如 Bash 那样广泛可用或兼容。简单的说就是zsh提供更多的高级用法,可是呢,兼容性不是特别好,没有bash那么广泛适配;

三、选择 Bash 还是 Zsh?

选择 Bash 还是 Zsh 主要取决于个人偏好和需求。如果你正在寻找一个广泛可用、兼容性强且易于学习的 shell,Bash 可能是一个不错的选择。

然而,如果你想要一个功能更丰富、更灵活且易于自定义的 shell,那么 Zsh 可能更适合你。

四、一些常见问题

对于mac用户来说,如何确定自己的电脑默认使用的是哪个shell是哪种呢?

【1】方法一:我们可以通过版本来确定,一般来说,macOS的版本在10.15之前的默认shell都是bash,之后的版本就是zsh
【2】方法二:我们可以直接在终端中输入echo $SHELL来看输出结果确定当前使用shell模式是哪个;

我们在使用一些命令时,如mvn(maven),java等相关命令时,我们会做一些环境变量的配置,有时候明明配置了环境变量,但是依旧提示zsh,或者bash command未找到?

【1】通常来说,第一步肯定是检查我们的环境,系统使用的是哪一个shell来进行配置的(echo $SHELL);
在这里插入图片描述
【2】确定之后,打开对应的shell,查看我们的配置信息是否有误,路径错误还是基本的书写错误等,然后通过source来重新生效我们的shell;

source ~/.bash_profile 或者 source ~/.zrcsh

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux之ansible的playbook剧本(yaml文件)
  • VMwareWorkstation安装UOS系统(1070版本)教程
  • 如何识别和防范跨站请求伪造(CSRF)?
  • YOLO改进模块后不出现Glops参数问题
  • 【408 数据结构】第2章 线性表
  • PHP-SER-libs靶场通关(1-9)
  • 数据结构基础详解(C语言): 栈的括号匹配(实战)与栈的表达式求值特殊矩阵的压缩存储
  • 国家新标准引领,油烟净化器为烟火气添清新活力
  • 网络安全(sql注入2,less3)
  • 苹果的“AI茅”之路只走了一半
  • TeamTalk数据库代理服务器
  • AI问答-数据库:理解头表和行表
  • ModuleNotFoundError: No module named ‘keras.layers.core‘怎么解决
  • 【CSS】mask-image属性的详细介绍
  • Java中校验导入字段长度与数据库字段长度一致性
  • ES2017异步函数现已正式可用
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Java 内存分配及垃圾回收机制初探
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • leetcode46 Permutation 排列组合
  • react-native 安卓真机环境搭建
  • vue的全局变量和全局拦截请求器
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 思考 CSS 架构
  • 我看到的前端
  • 赢得Docker挑战最佳实践
  • 用Canvas画一棵二叉树
  • 阿里云ACE认证学习知识点梳理
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 交换综合实验一
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​520就是要宠粉,你的心头书我买单
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • #Z0458. 树的中心2
  • #Z2294. 打印树的直径
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • ( 10 )MySQL中的外键
  • ()、[]、{}、(())、[[]]命令替换
  • (C++17) optional的使用
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (k8s)Kubernetes本地存储接入
  • (LeetCode C++)盛最多水的容器
  • (PADS学习)第二章:原理图绘制 第一部分
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (十一)手动添加用户和文件的特殊权限
  • (转)memcache、redis缓存
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .sys文件乱码_python vscode输出乱码