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

希望文章能给到你启发和灵感~

如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏 支持一下博主吧~

阅读指南

开篇说明

本篇主要简单说明一下,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简单的一个例子:

bash 复制代码
#!/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;

bash 复制代码
source ~/.bash_profile 或者 source ~/.zrcsh
相关推荐
Beekeeper&&P...1 天前
git bash是什么,git是什么,git中的暂存区是什么,git中的本地仓库是什么,git中工作目录指的是什么
开发语言·git·bash
独行soc4 天前
#渗透测试#SRC漏洞挖掘#网络运维# 黑客脚本编写04之脚本与用户交互
运维·安全·面试·bash·交互
꧁薄暮꧂5 天前
Linux解决 -bash: nc: command not found&-bash: nc: 未找到命令
linux·运维·bash
曹天骄6 天前
mac怎么看当前终端是zsh还是bash
开发语言·macos·bash
No8g攻城狮6 天前
【异常解决】Linux shell报错:-bash: [: ==: 期待一元表达式 解决方法
linux·运维·bash
茶颜悦色vv7 天前
shell脚本(2)
linux·web安全·网络安全·bash
?crying8 天前
深入理解 source 和 sh、bash 的区别
linux·开发语言·bash
爱编程的小金毛球球10 天前
-bash: /home/xxx/anaconda3/bin/conda: No such file or directory
linux·conda·bash
冷心笑看丽美人11 天前
RHEL 网络配置(Linux网络服务器 09)
linux·运维·服务器·网络·bash
日晨难再11 天前
C语言&Python&Bash:空白(空格、水平制表符、换行符)与转义字符
linux·c语言·开发语言·python·bash