ash, bash, ksh, csh, zsh
生活随笔
收集整理的這篇文章主要介紹了
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的原因在于它們各自都有自己的特點,下面做一個簡單的介紹:
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了
總結
以上是生活随笔為你收集整理的ash, bash, ksh, csh, zsh的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图像色调,饱和度,对比度等相关定义
- 下一篇: python项目的requirement