Linux Shell - bash & ksh

上一篇 / 下一篇  2010-04-06 14:05:41 / 个人分类:Linux

我知道shell有好多种.例如:TCSH SHELL . BASH SHELL 等.
请问共有几种shell,他们都有什么区别?
我的系统是RH9,用的是什么shell/
谢谢!


目前流行的Shell有ash, bash, ksh, csh, zsh等,你可以用下面的命令来查看你。

bash(Bourne Again shell)是Linux中最常见的。常见的还有:csh(语法与C语言相近),pdksh(是Korn shell的扩展),tcsh(微型shell),sash(单机版)。

各个Shell内置命令不同。Ksh 有的 Bash 都有,但Bash 有的Ksh 不一定有。所以要是编写的以Bash 为环境,那么在Ksh下可能出现不兼容的现象,导致脚本无法运行或运行出错。

bash and ksh are written differently. If you have a stopped job in the background, bash doesn't allow you to exit. So after tying exit, you are still in bash shell. By typing exit in ksh, you actually exits from ksh and terminate all the processes started in ksh. ksh in Solaris 10 doesn't allow you to exit with stopped background process.

在bash中输入ksh回车,就进入了ksh,相当于子shell,退出可以使用ctrl+d,返回bash,在ksh下输入bash就可以切换到bash了,当然退出也是ctrl+d。
当然bash一般是安装过的,但是ksh就不一定安装了,如果提示command not found的话,那就是没有安装了。
 

查看自己的Shell类型:

  # echo $SHELL
  $SHELL是一个环境变量,它记录用户所使用的Shell类型。你可以用命令:

  # Shell-name

  来转换到别的Shell,这里Shell-name是你想要尝试使用的Shell的名称,如

ash等。这个命令为用户又启动了一个Shell,这个Shell在最初登录的那个Shell

之后,称为下级的Shell或子Shell。

  使用命令:

  # exit

  可以退出这个子Shell。


使用不同的Shell的原因在于它们各自都有自己的特点,下面做一个简单的介绍:

  1.ash

  ash Shell是由Kenneth Almquist编写的,是Linux中占用系统资源最少的一

个小Shell,它只包含24个内部命令,因而使用起来很不方便。

  2.bash

  bash是Linux系统默认使用的Shell,它由Brian Fox和Chet Ramey共同完成,

是Bourne Again Shell的缩写,内部命令一共有40个。Linux使用它作为默认的

Shell是因为它有以下的特色:

  (1)可以使用类似DOS下面的doskey的功能,用上下方向键查阅和快速输入

并修改命令。

  (2)自动通过查找匹配的方式,给出以某字串开头的命令。

  (3)包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关

的帮助。

  3.ksh

  ksh是Korn Shell的缩写,由Eric Gisin编写,共有42条内部命令。该Shell

最大的优点是几乎和商业发行版的ksh完全相容,这样就可以在不用花钱购买商业

版本的情况下尝试商业版本的性能了。

  4.csh

  csh是Linux比较大的内核,它由以William Joy为代表的共计47位作者编成,

共有52个内部命令。该Shell其实是指向/bin/tcsh这样的一个Shell,也就是说,

csh其实就是tcsh。

  5.zch

  zch是Linux最大的Shell之一,由Paul Falstad完成,共有84个内部命令。如

果只是一般的用途,是没有必要安装这样的Shell的。

Bourne Shell (/usr/old/bin/sh)
C Shell (/usr/bin/csh)
Korn Shell (/usr/bin/ksh)
POSIX Shell (/usr/bin/sh)
如何知道当前使用的是什么Shell?
①输入一个系统不认识的命令(如#fuck_pig)获得系统提示
②#e cho $0 (适用:sh/ksh)
③#ps |grep $$|awk ‘{print $4}’
④#e cho $SHELL(用户默认的Shell,但不实时反映当前shell)

还有在你的/etc/shells中你可以看到更多的shell:
# /etc/shells: valid login shells
/bin/ash
/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/zsh
/bin/sash
/bin/zsh
/usr/bin/esh
/bin/dash
/bin/bash
/bin/rbash

不同的 shell 有著不同的功能,且也彼此各異、或說"大同小異"。
常見的 shell 主要分為兩大主流:
sh:
burne shell (sh)
burne again shell (bash)
csh:
c shell (csh)
tc shell (tcsh)
korn shell (ksh)

参考 old.blog.edu.cn/user1/10137/archives/2005/85452.shtml

================

如果你想使用ksh作为你的默认shell 用chsh命令

格式

chsh [ -s shell ] [ username ]

描述
chsh 用来更换你登入时所用的shell 。在命令列没指定shell。 chsh 会提示一个给你。

加入你的名字叫user 就这样
chsh -s ksh user 就可以改变你默认的登陆shell了


其实bash比ksh强大很多了 否则也不会所有的linux发行版都用bash做默认shell了

学习的话 想用得时候直接运行ksh 就可以 退出的时候运行exit

 


TAG: BASH Linux linux shell Shell bash ksh

 

评分:0

我来说两句

Open Toolbar