ash, bash, ksh, csh, zsh
/bin/bash (就是 Linux 预设的 shell, 是现在很多Linux的发行版中默认的shell,综合了其他shell的很多优点。)
/bin/ksh (Kornshell 由 AT&T Bell lab. 发展出來的,相融于 bash)
/bin/tcsh (整合 C Shell ,提供更多的功能)
/bin/csh (已经被 /bin/tcsh 所取代)
/bin/zsh (基于 ksh 发展出來的,功能更強大的 shell)现在一般的shell 是使用的bash >带有命令自动补全等等功能,但基本的sh没有
sh来自于systemV的Unix,是传统的Unix的shell,直到现在很多的系统管理员仍然喜欢使用sh。


目前流行的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的原因在于它们各自都有自己的特点,下面做一个简单的介绍:
.ash
ash Shell是由Kenneth Almquist编写的,是Linux中占用系统资源最少的一个小Shell,它只包含24个内部命令,因而使用起来很不方便。
.bash
bash是Linux系统默认使用的Shell,它由Brian Fox和Chet Ramey共同完成,是Bourne Again Shell的缩写,内部命令一共有40个。Linux使用它作为默认的Shell是因为它有以下的特色:
()可以使用类似DOS下面的doskey的功能,用上下方向键查阅和快速输入并修改命令。
()自动通过查找匹配的方式,给出以某字串开头的命令。
()包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助。
.ksh
ksh是Korn Shell的缩写,由Eric Gisin编写,共有42条内部命令。该Shell最大的优点是几乎和商业发行版的ksh完全相容,这样就可以在不用花钱购买商业版本的情况下尝试商业版本的性能了。
.csh
csh是Linux比较大的内核,它由以William Joy为代表的共计47位作者编成,共有52个内部命令。该Shell其实是指向/bin/tcsh这样的一个Shell,也就是说,csh其实就是tcsh。
.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 $ (适用:sh/ksh)
③#ps |grep $$|awk ‘{print $}’
④#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//archives//.shtml
================
如果你想使用ksh作为你的默认shell 用chsh命令
格式
chsh [ -s shell ] [ username ]
描述
chsh 用来更换你登入时所用的shell 。在命令列没指定shell。 chsh 会提示一个给你。
加入你的名字叫user 就这样
chsh -s ksh user 就可以改变你默认的登陆shell了
其实bash比ksh强大很多了 否则也不会所有的linux发行版都用bash做默认shell了
ash, bash, ksh, csh, zsh的更多相关文章
- Unix Shells: Bash, Fish, Ksh, Tcsh, Zsh
Hyperpolyglot Unix Shells: Bash, Fish, Ksh, Tcsh, Zsh grammar | quoting and escaping | charactersvar ...
- 把 Mac 上的 bash 换成 zsh
本人补充:mac版git下载地址:http://code.google.com/p/git-osx-installer/downloads/list?can=3&q=&sort=- ...
- Mac terminal从bash切换到zsh
0.预备知识 echo $SHELL命令可以查看当前正在使用什么shell 默认情况下(mbp 10.10.5)使用bash作为默认shell,然而也自带zsh,which zsh命令可以查看zsh的 ...
- [Shell] 文件名截取的问题:bash .vs. csh
参考: http://bbs.chinaunix.net/thread-1825455-1-1.html 但是, 经常处理更复杂的文件名, 这里给出一个加长版的例子, 换汤不换药. 查询当前shell ...
- shell bash ksh
shell 是一个交互性命令解释器.shell独立于操作系统,这种设计让用户可以灵活选择适合自己的shell.shell让你在命令行键入命令,经过shell解释后传送给操作系统(内核)执行. ...
- 调整登录会话和资源限制,bash和csh的ulimit设置方法
查看软限制和硬限制 要查看会话中的软限制设置,请运行: 对于csh: % limit 对于bash: $ ulimit -a 下面的输出样本显示了PFE上的软限制设置. 对于csh: % limit ...
- CentOS Linux修改默认Bash shell为Zsh shell
Shell是在程序员与服务器间建立一个桥梁,它对外提供一系列命令,让我们得以控制服务器.常用的Bash就是Shell的一种,也是Linux下默认Shell程序.这里介绍一种更强大的.更人性化的Shel ...
- HOSTNAME问题 和yum配置163源的操作 安装lsb_release,KSH,CSH
HOSTNAME 在 /etc/hosts 里添加一行 127.0.0.1 yourhostname yum配置 来自http://www.cnblogs.com/wutengbiao/p/41889 ...
- Linux Shell 与Linux常用命令
Linux的人际交互分为图形界面方式和命令行方式. Linux本身只是一个操作系统内核,而由X Window图形用户接口为Linux提供图形用户界面功能.可以把X Window理解为一个运行在Linu ...
随机推荐
- PHP获取中文汉字首字母方法
function getFirstLetter($str){ $fchar = ord($str{0}); if($fchar >= ord("A") and $fchar ...
- QF——网络之知识碎片
1.URL中文问题: URL不支持中文.若出现中文,需要对URL进行utf-8编码. NSString *urlString = [kULRSTRING stringByAddingPercentEs ...
- mysql学习(四)-字段类型
mysql数据类型: 数值型: 整形:int 浮点型:float double decimal:定点型 日期: date '2012-01-02' time '10:01:01' datetime ...
- 如何使代码审查更高效【摘自InfoQ】
代码审查者在审查代码时有非常多的东西需要关注.一个团队需要明确对于自己的项目哪些点是重要的,并不断在审查中就这些点进行检查. 人工审查代码是十分昂贵的,因此尽可能地使用自动化方式进行审查,如:代码 ...
- javascirpt语法
1.区分大小写 ECMAScript中的一切(变量.函数名和操作符)都区分大小写,而函数名不能使用typeof,因为它是一个关键字,但typeof则完全可以是一个有效的函数名. 2.标识符 指变量.函 ...
- fputcsv 和 fgetcsv
public function putcsv(){ $list = M("ad")->limit(0,10)->select(); $fp = fopen('./fil ...
- poj2262---素数(质数)的判断
收获:一开始以为是100万的所有数字,题目要求是只要偶数,也可以分析出来,如果是给一个奇数,当我们给他大于等于3的奇数(这个数加有可能不是质数,但至少满足是奇数,至于是不是质数还要自己判断),剪出来一 ...
- gdb的user-define command
搜索: user-defined例子. # save this file in ~/.gdb or some where easy to find. # then in ~/.gdbinit add ...
- [置顶] 北漂的大三IT男(暂完)
今天是2013年8月9日,是我待在北京的最后一个晚上,今天我已经正式向公司提出辞职了,虽然公司已经答应从下个月起涨部分工资,但是我还是坚决的离开了,回想当时进公司的想法----------干了一个月后 ...
- java入门学习(九) 算术运算符
请大家关注我的博客www.taomaipin.com 运算符在java基础中也占有着举足轻重的位置,我们当然要学会它.java 其实和其他计算机语言一样,基本的算术运算符基本一样,让我们看看 有哪些算 ...