來自:Linux迷 鏈接:https://www. Linux和Unix都提供了開箱即用的各種shell。你可以找到bash (Bourne shell), ksh (Korn shell), csh (C shell)/tcsh (TC shell), sh (Bourne shell)和更多默認(rèn)安裝。然而,你如何檢查自己使用的shell 呢?找出我在Linux上使用的shell的最好方法是什么? echo $SHEL 不是那么可靠。本文解釋了如何找出自己在Linux、MacOS、FreeBSD或類Unix系統(tǒng)中使用的shell。下面的echo命令或printf命令應(yīng)該可以使用:linuxmi@linuxmi:~/www.$ echo '$SHELL' /bin/bashlinuxmi@linuxmi:~/www.$ printf '我現(xiàn)在的shell - %s\n' '$SHELL' 我現(xiàn)在的shell - /bin/bash請注意,這$SHELL是當(dāng)前用戶的shell程序,但不一定是當(dāng)前正在運(yùn)行的shell程序。試試下面的例子linuxmi@linuxmi:~/www.$ echo '我現(xiàn)在的shell是 $SHELL ($0)' 我現(xiàn)在的shell是 /bin/bash (bash) linuxmi@linuxmi:~/www.$ ksh $ echo '我現(xiàn)在的shell是 $SHELL ($0)' 我現(xiàn)在的shell是 /bin/bash (ksh)因此,我建議使用以下語法來檢查您正在使用哪個shell。如何檢查我正在使用哪個shell?這是另一個古老的Unix技巧。使用帶-p {pid}選項(xiàng)的ps命令。以下命令選擇其進(jìn)程ID號顯示在pid中的進(jìn)程。使用以下命令找出您所在的shell:那么傳遞給-p選項(xiàng)的$參數(shù)是什么?記住$返回當(dāng)前進(jìn)程的PID(進(jìn)程標(biāo)識號),而當(dāng)前進(jìn)程就是您的shell。因此,在該編號上運(yùn)行ps會顯示您的Shell的進(jìn)程狀態(tài)列表。在該清單中,您將找到shell的名稱(查找CMD列)。linuxmi@linuxmi:~/www.$ ps -p $$PID TTY TIME CMD 10603 pts/2 00:00:00 bashMYSHELL=`ps -hp $$|awk '{echo $5}'`請注意,這些是反引號,而不是撇號。或者,如果您有bash shell,則最好嘗試以下方法:MYSHELL=$(ps -hp $$|awk '{echo $5}')linuxmi@linuxmi:~/www.$ ksh $ echo $0 ksh $ ps -p $$ PID TTY TIME CMD 12350 pts/6 00:00:00 ksh $ csh % ps -p $$ PID TTY TIME CMD 12357 pts/6 00:00:00 csh %如何檢查我的Linux機(jī)器上安裝了多少個shell ?該/etc/shells是一個文本文件,其中包含有效登錄shell的完整路徑。輸入以下[nixmd name=”cat”]以查看列出您的Linux或Unix機(jī)器上安裝了多少個Shell:linuxmi@linuxmi:~/www.$ cat /etc/shells # /etc/shells: valid login shells /bin/sh /bin/bash /usr/bin/bash /bin/rbash /usr/bin/rbash /bin/dash /usr/bin/dash /usr/bin/ksh2020 /usr/bin/rksh2020 /bin/csh /usr/bin/csh當(dāng)我打開終端應(yīng)用時,默認(rèn)情況下打開哪個shell?您的默認(rèn)外殼程序在/ etc / passwd文件中定義。因此,請嘗試以下grep命令:linuxmi@linuxmi:~/www.$ grep '^$USER' /etc/passwd看起來/bin/bash shell是我的默認(rèn)shell。想要更改您的默認(rèn)shell?請閱讀“在Linux或Unix中更改shell”頁面以了解更多信息。讓我們再次總結(jié)所有命令。如何檢查我正在使用哪個shell:ps -p $$ -可靠地顯示您當(dāng)前的shell名稱。 echo '$SHELL' -顯示當(dāng)前用戶的shell,但不一定是正在運(yùn)行的shell。 echo $0 -在Linux或類似Unix的系統(tǒng)上獲取當(dāng)前shell解釋器名稱的另一種可靠且簡單的方法。 cat /etc/shells -列出當(dāng)前安裝的有效登錄Shell的路徑名 grep '^$USER' /etc/passwd -打印默認(rèn)的shell名稱。當(dāng)您打開終端窗口時,默認(rèn)shell程序?qū)⑦\(yùn)行。 chsh -s /bin/ksh -將您的帳戶使用的shell程序從/ bin / bash(默認(rèn))更改為/bin/ksh
...END...
|