不同的shell具備不同的功能,shell還決定了Linux中默認的shell是/bin/bash,流行的shell有ash、bash、ksh、csh、zsh等,不同的shell都有自己的特點以及用途。
查看自己的服務器支持什么shell
# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin
# chsh -l /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin
查看當前的shell
# echo $SHELL /bin/bash
bash
大多數Linux系統默認使用的shell,bash shell是Bourne shell 的一個免費版本,它是最早的Unix shell,bash還有一個特點,可以通過help命令
來查看幫助。包含的功能幾乎可以涵蓋shell所具有的功能,所以一般的shell腳本都會指定它為執行路徑。
csh
C shell 使用的是“類C”語法,csh是具有C語言風格的一種shell,其內部命令有52個,較為龐大。目前使用的並不多,
已經被/bin/tcsh所取代。
ksh
Korn shell 的語法與Bourne shell相同,同時具備了C shell的易用特點。許多安裝腳本都使用ksh,ksh 有42條內部命令,與bash相比有一定的限制性。
看看相應的目錄中有無ksh # ls /bin/ksh 如果命令安裝就成了。 # yum install ksh
查看
# ll /bin/ksh
lrwxrwxrwx 1 root root 21 May 8 09:26 /bin/ksh -> /etc/alternatives/ksh
tcsh
tcsh是csh的增強版,與C shell完全兼容。
sh
是一個快捷方式,已經被/bin/bash所取代。
nologin
指用戶不能登錄
zsh
目前Linux里最龐大的一種shell:zsh。它有84個內部命令,使用起來也比較復雜。一般情況下,不會使用
該shell。
改變shell
當前用戶改變自己的shell(普通用戶也可以執行)
[root@localhost ~]# chsh #必變當前用戶的shell Changing shell for root. New shell [/bin/bash]: /bin/csh #輸入新的shell地址 Shell changed. [root@localhost ~]# chsh -s /bin/csh #改變當前用戶shell,設置為 /bin/csh Changing shell for root. Shell not changed.
還有一種方法,需要管理員權限
# usermod -s /bin/sh xu