XuSenfeng

个人站

复读了,更新随缘,有的文件不全或者图片缺失具体看我的笔记库(https://github.com/XuSenfeng/note)


使用其他shell《Linux命令行与Shell脚本编程大全》

目录

使用其他shell

什么是dash shell

它是ash shell的直系后代,而ash shell则是Unix系统上原来的Bourne shell的简化版本

ash shell最早的版本体积极小、速度奇快,但缺乏许多高级功能,比如命令行编辑或命令使用记录功能,这使它很难用作交互式shell

Debian Linux发行版创建了它自己的ash shell版本(称作Debian ash,或dash)以供自用。dash复制了ash shell的NetBSD版本的大多数功能,提供了一些高级命令行编辑能力\

Ubuntu Linux发行版将bash shell用作默认的交互shell,但将dash shell用作默认的/bin/sh shell。这个“特性”着实让shell脚本程序员一头雾水

在Unix世界中,默认shell一直是/bin/sh。在大多数Linux发行版上,/bin/sh文件是链接到shell程序/bin/bash的一个符号链接

Ubuntu Linux发行版将/bin/sh文件链接到了shell程序/bin/dash。由于dash shell只含有原来Bourne shell中的一部分命令,这可能会(而且经常会)让有些shell脚本无法正确工作

dash shell的特性

dash shell使用命令行参数来控制其行为。表23-1列出了命令行参数,并介绍了每个参数的用途

参数 描述
-a 导出分配给shell的所有变量
-c 从特定命令字符串中读取命令
-e 如果是非交互式shell的话,在有未经测试的命令失败时立即退出
-f 显示路径名通配符
-n 如果是非交互式shell的话,读取命令但不执行它们
-u 在尝试展开一个未设置的变量时,将错误消息写出到STDERR
-v 在读取输入时将输入写出到STDERR
-x 在执行命令时将每个命令写出到STDERR
-I(大写i) 在交互式模式下,忽略输入中的EOF字符
-i 强制shell运行在交互式模式下
-m 启用作业控制(在交互式模式下默认开启)
-s 从STDIN读取命令(在没有指定文件参数时的默认行为)
-E 启用emacs命令行编辑器
-v 启用vi命令行编辑器