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

【Linux基础】dash和bash简介

Dash(Debian Almquist Shell)和 Bash(Bourne Again Shell)是 Unix/Linux 系统中的命令行 shell,用于执行命令、管理文件系统、编写脚本等任务的工具。

一、Dash和Bash的区别:

  1. Bash(Bourne Again Shell)

    • Bash 支持历史命令记录、命令补全、作业控制等高级特性。
    • Bash 具有广泛的脚本编写能力,支持条件语句、循环、函数等。
    • Bash 语法和功能相对复杂,但同时也更灵活和强大。
  2. Dash(Debian Almquist Shell)

    • Dash 是 Debian GNU/Linux 系统中的默认 shell,取代了较早的 Bash。
    • Dash 设计更注重轻量化和速度,它的执行速度比 Bash 快,因为它的代码更精简。
    • Dash 不支持一些 Bash 的高级特性,比如命令补全和作业控制。

Bash 是功能更强大、更灵活的 shell,适用于各种场景,特别是需要交互性和脚本编写的任务。
Dash 则更适合于需要更快速和轻量化的环境,用于执行命令、管理文件系统和编写脚本。

二、Dash

  1. 速度快: Dash 的设计目标之一是速度。相比于一些功能更复杂的 shell(如 Bash),Dash 在执行脚本时更快,因为它的代码更精简。

  2. 轻量级: Dash 的代码相对较小,它的功能集也较小,这使得它在系统资源有限的环境中运行更加高效。

  3. 简单: Dash 的语法和功能相对较简单,这使得它更容易学习和使用,尤其是对于新手来说。

  4. 遵循 POSIX 标准: Dash 遵循 POSIX(Portable Operating System Interface)标准,这使得它能够在不同的 Unix-like 系统中保持一致性。

  5. 功能有限: 相对于一些更复杂的 shell(如 Bash),Dash 的功能集相对较小。它不支持一些高级特性,如命令补全、作业控制等。

  6. 不适合交互式使用: Dash 主要设计用于脚本编写,对于需要交互式使用的场景,如命令行操作和Shell脚本调试,可能不够方便。

  7. 脚本兼容性问题: 由于 Dash 的功能较为简单,一些依赖 Bash 特有功能的脚本可能无法在 Dash 中正确执行,需要进行修改。

  8. 缺少高级特性: Dash 缺少一些 Bash 的高级特性,如数组操作、关联数组、递归函数等,这可能会限制在脚本编写中的一些需求。

Dash 作为一个轻量级的 shell,在某些特定的场景下具有优势,尤其是在需要追求速度和资源效率的环境中。然而,在需要更多功能和灵活性的情况下,可能会选择更复杂的 shell,如 Bash。在启动脚本中或需要追求性能的系统中。

三、bash

Bash(Bourne Again Shell)作为 Unix 和 Linux 系统中最常用的命令行 shell,具有易学易用、广泛兼容、丰富的功能和工具等优点,但也存在一些性能、安全性和复杂性等方面的缺点,用户在选择使用时需要根据具体的需求和场景进行权衡。

  1. 易学易用: Bash 语法简单直观,易于学习和使用,对于新手和初学者来说比较友好。

  2. 广泛兼容: Bash 是许多 Unix 和 Linux 系统中默认的 shell,因此脚本在不同的系统上通常都能正常运行,具有较好的兼容性。

  3. 丰富的功能和工具: Bash 提供了丰富的功能和工具,包括条件语句、循环、函数、管道、重定向等,能够满足各种系统管理、数据处理和自动化任务的需求。

  4. 可编程性强: Bash 是一种完全可编程的 shell,允许用户编写复杂的脚本和自定义函数,可以实现高级的系统管理和自动化操作。

  5. 强大的环境变量支持: Bash 支持环境变量,允许用户设置和传递参数,方便进行系统配置和脚本编写。

  6. 良好的社区支持: 由于 Bash 是开源的,有一个庞大的社区支持,用户可以从社区中获取到大量的文档、教程和资源。

  7. 性能相对较低: 与一些其他的 shell(如 Dash)相比,Bash 在执行一些复杂任务时可能会稍微慢一些,因为它的功能较为丰富,代码也较为复杂。

  8. 安全性问题: Bash 在处理一些特殊情况时可能存在安全漏洞,比如 ShellShock 漏洞等,需要用户和管理员注意安全性问题,并及时进行更新和修复。

  9. 不适合高性能计算: 对于需要大量计算和高性能的任务,Bash 并不是最佳选择,因为它不如一些专门设计的脚本语言或编译型语言效率高。

  10. 复杂的语法: 尽管 Bash 语法相对简单,但在处理一些复杂的情况时,Bash 的语法可能会显得有些复杂,需要一定的经验和技巧。

四、使用shebang注释运行脚本

要将一个脚本设置为在 Dash Shell 中启动,可以在脚本的开头添加一个特殊的注释,称为 “shebang” 或 “hashbang” 行,指定要用于执行脚本的 shell。在这种情况下,你会指定 Dash 的路径。

在脚本的开头添加以下行:

#!/bin/dash
echo "Hello, world!"

第一行注释(shebang行:“sharp”(#)和“bang”(!)说明用Dash Shell执行脚本。

在写入shebang行时,可以使用 which 命令来查找 Dash Shell 的路径:

which dash

然后将该路径添加到脚本的shebang行中。

五、dash和bash的切换

将Ubuntu shell环境修改为bash,

#选择No,将Ubuntu shell由dash修改为bash
sudo dpkg-reconfigure dash 

相关文章:

【Linux基础】dash和bash简介

Dash(Debian Almquist Shell)和 Bash(Bourne Again Shell)是 Unix/Linux 系统中的命令行 shell,用于执行命令、管理文件系统、编写脚本等任务的工具。 一、Dash和Bash的区别: Bash(Bourne Agai…...

精读《如何做好 CodeReview》

1 引言 任何软件都是协同开发的,所以 CodeReview 非常重要,它可以帮助你减少代码质量问题,提高开发效率,提升稳定性,同时还能保证软件架构的稳定性,防止代码结构被恶意破坏导致难以维护。 所以 CodeRevie…...

双指针(滑动窗口)-算法刷题

一.移动零(. - 力扣(LeetCode)) 算法思想 : 设置两个指针left,right,将数组分为三块[0,left]为不为0的元素,[left1,right-1]为0元素,[right,num.size()-1]为未扫描的区域&#xff0c…...

上位机图像处理和嵌入式模块部署(qmacvisual之ROI设定)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 ROI,全称是region of interest,也就是感兴趣区域。这里面一般分成两种情况,一种是所有的算法都依赖于这个ROI&a…...

银行监管报送系统介绍(五):金融统计数据大集中自动化报送系统——PBOC Report

人民银行金融统计数据大集中自动化报送系统(简称PBOC Report),是基于现代计算机网络技术应用基础上,由人行总行设置金融统计数据服务器,建立的一个全国统一的金融统计数据库。 人行针对各银行存贷款、中间业务、网点人…...

常用中间件redis,kafka及其测试方法

常用消息中间件及其测试方法 一、中间件的使用场景引入中间件的目的一般有两个:1、提升性能常用的中间件:1) 高速缓存:redis2) 全文检索:ES3) 存日志:ELK架构4) 流量削峰:kafka 2、提升可用性产品架构中高可…...

ROS1通过rosbridge在局域网中控制turtle进行运动(PC和手机)

通过ROSbridge控制小海龟(turtlesim)的具体案例。使用一个简单的Python脚本通过通过局域网上连接上传ROSbridge服务器,并发送速度指令来控制小海龟的移动 功能包的结构如下: HTML文件的编写(界面) html用…...

MQ高级篇---消息可靠性

MQ的一些常见问题 后面内容基于springboot 2.3.9.RELEASE 消息可靠性 生产者确认机制 在publisher微服务中application.yml中添加 spring:rabbitmq:publisher-confirm-type: correlatedpublisher-returns: truetemplate:mandatory: true每个RabbitTemplate只能配置一个Return…...

SpringMVC | SpringMVC中的 “文件上传和下载”

目录: 一、文件上传1.1 文件上传“概述”1.2 文件上传“具体配置” :“前端”中配置“文件上传” ( type“file” 满足3个条件 )“后端”中配置“文件上传” ( 配置id为“CommonsMultipartResolver”的bean 配置“文件上传”的“约束条件” 通过“MultipartFile接口”参数接…...

JVM快速入门(2)HotSpot和堆、新生区、永久区、堆内存调优、JProfiler工具分析OOM原因、GC(垃圾回收)、JVM经典面试笔试题整理

5.6 HotSpot和堆 5.6.1 Hotspot 三种JVM: Sun公司,HotspotBEA,JRockitIBM,J9 VM,号称是世界上最快的Java虚拟机 我们一般学习的是:HotSpot 5.6.2 堆 Heap,一个JVM只有一个堆内存&#xff0c…...

我的风采——android studio

目录 实现“我的风采”页面要求理论代码生成apk文件 实现“我的风采”页面 要求 要求利用’java框架的边框布局实现“找的风采 ”页而,其中中间为你的生活照,左右和下面为按钮,上面为标签 理论 Java GUI编程是Java程序设计的重要组成部分…...

BMS设计中的短路保护和MOSFET选型(上)

电池管理系统(BMS)是一种能够对电池进行监控和管理的电子装备,是电池与用户之间的纽带。通过对电压、电流、温度以及SOC等数据采集,计算进而控制电池的充放电过程,主要就是为了能够提高电池的利用率,防止电…...

用go实现一个任务调度类 (泛型)

用go实现一个任务调度类 (泛型) 源码地址: https://github.com/robinfoxnan/BirdTalkServer/blob/main/server/core/workmanager.go 1.概述 实现了一个简单的任务管理系统,允许用户定义任务和工作者,并将任务分配给…...

ansible 管理工具以及常用模块

一、前期准备 1、安装 yum install ansible 如果yum源没有ansible,需要提前配置yum源: mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup wget -O…...

javaSSM公司招聘管理系统IDEA开发mysql数据库web结构计算机java编程maven项目

一、源码特点 IDEA开发SSM公司招聘管理系统是一套完善的完整企业内部系统,结合SSM框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发)MAVEN方式加 载,系统具有完整的源代码和…...

蓝桥杯day11刷题日记

P8615 [蓝桥杯 2014 国 C] 拼接平方数 思路:先把数据范围内的平方数打上标记,然后就是遍历这个区间,转成字符串(好拆数据),用substr拆开数据,再强转成整数类型,最后查看拆开的数据是…...

IDEA, Pycharm, Goland控制台乱码

IDEA, Pycharm, Goland控制台乱码 问题描述: 控制台出现����等乱码 复现频率: 总是 解决方案: 以IDEA为例 添加 -Dfile.encodingUTF-8位置 idea64.exe.vmoptions 在安装idea的bin目录idea.vmoptions idea客户端 示意图...

JavaScript单元测试jasmine学习(一)

介绍: jasmine是用于测试JavaScript的一种测试框架,BDD(Behavior Driven Development)行为驱动开发。不依赖于任何其他JavaScript框架,也不需要DOM 准备工作: 1. 首先添加jasmine到自己的项目中 npm install --save-dev jasmine 2. 在项目…...

108、3D Gaussian Splatting for Real-Time Radiance Field Rendering

简介 官网 更少训练时间的同时实现最先进的视觉质量,能在1080p分辨率下实现高质量的实时(≥30 fps)新视图合成 NeRF使用隐式场景表示,体素,点云等属于显示建模方法,3DGS就是显示辐射场。它用3D高斯作为灵活高效的表示方法&…...

PHP之CURL和Socket

文章目录 一、CURL1.基本流程(1)初始化(2)向服务器发送请求(3)向服务器发送请求(4)关闭curl 2.CURLOPT参数记得写一个文件curl上传的例子记得写一个json上传的例子3.CURL批处理 二、…...

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

7.4.分块查找

一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制&#xff0…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...