Unix/Linux里面的bash是什么

bash是 Bourne Again Shell 的缩写,是linux默认的标准shell(也是大家常说的系统内核),bash也是Unix/Linux上常见的Shell脚本解释器,既然bash是标准的shell,那么就有非标准的sh,csh,ksh等等,我们常说有多少种Shell,其实说的是Shell脚本解释器,Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本,bash是基于Bourne shell创建的,并且吸收了C shell和Korn shell的一些特性,而且bash完全兼容sh,也就是说,用sh写的脚本可以不加修改的在bash中执行。

  sh:sh 由Steve Bourne开发,是Bourne Shell的缩写,sh 是Unix 标准默认的shell。

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

  csh:csh 是Linux比较大的内核,它由以William Joy为代表的共计47位作者编成,共有52个内部命令。该shell其实是指向/bin/tcsh这样的一个shell,也就是说,csh其实就是tcsh。

  ksh:ksh 是Korn shell的缩写,由Eric Gisin编写,共有42条内部命令。该shell最大的优点是几乎和商业发行版的ksh完全兼容,这样就可以在不用花钱购买商业版本的情况下尝试商业版本的性能了。

现在我们知道Unix/Linux上有多种shell,那我怎么知道当前使用的哪种shell呢,我们可以从当前进程中查看到这些信息。

方法1: ps | grep $$ | awk '{print $4}'
方法2: echo $0
方法3: echo $$ | ps -p

$$表示shell的进程号

同样的,在/etc/shells配置文件中记录了用户可以登录的shell的具体路径,有就是说用户可以在当前系统中使用的所有可登录shell的类型,因此查看这个文件的内容,即可知道当前系统中所支持的所有shell类型。

当你想要查看某个用户的Shell类型时,可以在/etc/passwd文件的最后一个字段中,查看到某个特定用户的登录Shell类型。以root为例,执行 cat /etc/passwd | grep ^root 最后一个:号字段显示的即为root用户的登录shell类型,为bash

猜你喜欢

转载自blog.csdn.net/michaelehome/article/details/79878151