您的位置:首页 > 运维架构 > Shell

linux下的各种shell介绍(bash和dash转换)

2017-09-11 11:35 423 查看
在linux下编写shell脚本文件时,经常会看到很多人在文件的第一行中标注“#!/bin/bash”。这句话的意思是告诉系统强制用bash,避免出现一些不兼容的问题。

那么,在linux系统中,除了bash之外,还有哪些shell工具?各自之间有什么区别?如何知道当前系统使用的是哪一个shell?彼此之间又如何进行转换呢?本文就来一一解答。

1、各类常用shell介绍

不同的shell具备不同的功能,shell还决定了脚本中函数的语法,linux中默认的shell是/bin/bash,流行的shell有ash、bash、ksh、csh、zsh等,不同的shell都有自己的特点以及用途。

ash。ash Shell是由Kenneth Almquist编写的,是Linux 中占用系统资源最少的一个小Shell,它只包含24个内部命令,因而使用起来很不方便。

bash。大多数Linux系统默认使用的shell,bash shell 是 Bourne shell 的一个免费版本,它是最早的 Unix shell,bash还有一个特点,可以通过help命令来查看帮助。包含的功能几乎可以涵盖shell所具有的功能,所以一般的shell脚本都会指定它为执行路径。

csh。C shell 使用的是“类C”语法,csh是具有C语言风格的一种shell,其内部命令有52个,较为庞大。目前使用的并不多,已经被/bin/tcsh所取代。

dash。小巧,符合 POSIX 标准,但是功能很少。不是给人交互时使用的。

ksh。Korn shell 的语法与 Bourne shell 相同,同时具备了 C shell 的易用特点。许多安装脚本都使用 ksh ,ksh有42条内部命令,与bash相比有一定的限制性。

tcsh。tcsh是csh的增强版,与 C shell 完全兼容。

sh。是一个快捷方式,已经被/bin/bash所取代。

zsh。zch是Linux 最大的Shell之一,由Paul Falstad完成,共有84 个内部命令。如果只是一般的用途,没有必要安装这样的Shell。

2、如何查询当前shell?

leon@Ubuntu:~$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4  9月 11 11:14 /bin/sh -> bash


3、如何进行shell间的转换?

例如,使用下面的命令可以将系统缺省的shell指定为bash:

sudo ln -fs /bin/bash /bin/sh


或者, 也可以使用下面的命令完成从bash到dash的转换:

sudo dpkg-reconfigure dash


在弹出的对话框中选择“否”!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux shell bash 脚本
相关文章推荐