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

Ubuntu 中 Bash / Zsh / Ash / Dash 的使用与区别(含对比图)

在 Ubuntu 及大多数 Linux 发行版中,“命令行”(Shell)是用户与操作系统交互的重要工具。常见的交互式 Shell 有 BashZshAshDash 等。虽然它们都可以执行命令脚本,但用途、性能、兼容性和功能特性各不相同。


1. Shell 简介

Shell 是一个命令解释器,位于 Linux 用户与内核之间,作用包括:

  • 接收用户输入的命令并解释执行
  • 提供脚本编程能力(变量、条件判断、循环、函数等)
  • 提供命令补全、历史记录等交互功能

在 Ubuntu 中,默认登录时使用的交互式 Shell 是 Bash,但系统脚本中的 /bin/sh 实际链接的是 Dash(为了提升启动速度和兼容性)。


2. Bash(Bourne-Again Shell)

特点与使用

  • 存放位置:/bin/bash
  • Ubuntu 默认交互式 Shell
  • 功能丰富:命令补全、历史搜索、提示符自定义、数组支持
  • 完全兼容 Bourne Shell(sh)并扩展各种新特性
  • 常用于日常终端交互、脚本编写、系统管理任务

示例

# 命令别名
alias ll='ls -lh --color=auto'# 数组
arr=(apple banana cherry)
echo "${arr[1]}"# 命令替换
now=$(date +%F_%T)
echo "当前时间: $now"

3. Zsh(Z Shell)

特点与使用

  • 存放位置:/bin/zsh(需安装)
  • 高度可定制,被称为“增强版 Bash”
  • 支持 Bash 大部分语法并提供更强补全、历史、通配符功能
  • 插件生态丰富(如 Oh My Zsh)
  • 适合高级用户和需要个性化终端的人

示例

# 高级通配符
print -l **/*.txt# 自动建议与目录跳转(需插件支持)

4. Ash(Almquist Shell)

特点与使用

  • 由 Bourne Shell 简化而来
  • 常见于 BusyBox 环境(嵌入式系统)
  • 功能精简、速度快
  • 在 Ubuntu 桌面版中很少用于交互

5. Dash(Debian Almquist Shell)

特点与使用

  • 存放位置:/bin/dash
  • 基于 Ash 优化,专为执行脚本而设计
  • 在 Ubuntu 中 /bin/sh 链接到 Dash(可用 ls -l /bin/sh 查看)
  • 启动速度更快,适合系统初始化脚本
  • 不支持 Bash 扩展

6. 对比表

Shell默认位置默认交互功能丰富度启动速度兼容性典型用途
Bash/bin/bash广泛支持日常交互、脚本编写
Zsh/bin/zsh很高中-慢高级交互、个性化终端
AshBusyBox 内很快POSIX嵌入式系统
Dash/bin/dash很快POSIX系统脚本、启动加速

7. 四种 Shell 对比图

下面是一个简单的 ASCII 图,展示它们的关系和适用场景。

                ┌──────────────────────┐│       Bourne Shell    │└──────────────────────┘│┌───────────────────┼───────────────────┐│                   │                   │
┌─────────────┐   ┌───────────┐       ┌───────────┐
│     Ash     │   │   Bash    │       │   Zsh     │
│(精简版 sh)  │   │(增强版 sh)│       │(增强版 Bash)│
└─────────────┘   └───────────┘       └───────────┘│
┌─────────────┐
│    Dash     │
│(优化版 Ash) │
└─────────────┘

阅读方式

  • Bourne Shell 是祖先,Ash 和 Bash 都继承自它。
  • Dash 是 Ash 的优化版本,用于脚本执行。
  • Zsh 基于 Bash 语法,但扩展了功能。

8. 使用建议

  • 日常使用:Bash(默认)或 Zsh(更好体验)
  • 写通用脚本:遵循 POSIX 标准,用 /bin/sh(Dash) 测试
  • 嵌入式/资源受限系统:Ash 或 Dash
  • 高级交互:Zsh + Oh My Zsh

切换默认 Shell

chsh -s /bin/zsh   # 切换到 Zsh
chsh -s /bin/bash  # 切换回 Bash
http://www.dtcms.com/a/406112.html

相关文章:

  • leetcode 814 二叉树剪枝
  • 【Redis】热Key/大Key问题、缓存击穿、缓存穿透、缓存雪崩、缓存与数据库一致性问题
  • 大模型剪枝系列——基于权重大小剪枝
  • 制作网站的模板深圳网站改版公司
  • 【Linux基础知识系列:第一百四十篇】理解SELinux与系统安全
  • dbswitch:一款免费开源、功能强大的异构数据库迁移同步工具
  • python+uniapp基于微信小程序美食点餐系统
  • Go语言100个实战案例-进阶与部署篇:使用Go打包生成可执行文件
  • 【Golang】--- 函数深度解析
  • 后端进阶-性能优化
  • 吉林做网站wordpress创建登录页
  • 【C++篇】C++11:从列表初始化到移动语义
  • WPS清除图片段落布局脚本
  • Excel学生成绩表,如何生成成绩分析报告?
  • 面试_场景方案设计
  • 【AI - nlp】Tokenizer简介及常见编码方式
  • JavaScript--基础ES(二)
  • 案例分享:增材制造的点阵材料压缩测试-VIC-3D高空间分辨率DIC系统在增材制造复杂结构中的应用
  • Parasoft软件测试解决方案助力Renovo汽车ADAS开发安全与合规
  • 外卖网站建设费用杭州比较好的代运营公司
  • 贵州省住房和城乡建设厅门户网站wordpress怎么看展现量
  • ✨WPF编程基础【1.1】:XAML文档框架
  • TensorFlow.js高级功能
  • AI 行业应用:AI 在金融、医疗、教育、制造业等领域的落地案例
  • 使用camel模式的WebApi接口中全大写的属性名称变成全小写的问题(续)
  • pulp解析器测试开发排产
  • 【开题答辩全过程】以 “辛巴克餐饮”小程序为例,包含答辩的问题和答案
  • bazel编译
  • 7、微服务中 DTO、VO、PO、BO 的设计规范
  • 建工之家祁阳seo