這裡介紹如何在 Linux 中查詢自己帳號預設的登入 shell 設定,並使用 chsh
指令修改預設的 shell。
shell 是介於使用者與 Linux 系統之間的介面,而在 Linux 中常見的 shell 有好多種,例如 sh
、csh
、tcsh
與 bash
等,一般的使用者可以自由選擇偏好的 shell 來使用。
查詢目前 Shell 與設定
使用者預設的 shell 設定,都寫在 /etc/passwd
這個檔案中,若要查詢自己的預設 shell,可以執行:
# 查看登入預設的 shell 設定值 grep `whoami` /etc/passwd | cut -d: -f7
/bin/bash
若想知道目前正在使用的 shell 是哪一個,可以查看 $0
這個特殊的環境變數:
# 查看目前的 shell 名稱 echo $0
bash
$0
這個特殊變數會包含目前執行程式的名稱,直接在 shell 的命列列底下查看這個變數的話,就會顯示目前正在執行的 shell 名稱。
我們也可以使用 ps
來查看目前使用中的 shell:
# 查看目前的 shell 名稱 /bin/ps -p $$
PID TTY TIME CMD 81598 pts/0 00:00:00 bash
SHELL
這個環境變數也會記錄登入 shell 的名稱:
# 查看目前的 shell 名稱 echo $SHELL
/bin/bash
如果在登入 Linux 之後,又在命令列中執行其他的 shell 時,SHELL
變數的內容就不一定會是目前正在使用的 shell,有可能會是登入預設的 shell,若遇到這樣的狀況,建議改用 $0
的方式來判斷。
查詢系統上可用的 Shell
在 /etc/shells
這個檔案中會列出系統上所有可用的 shell,從這個檔案裡就可以知道有哪些 shell 可用:
# 列出系統上所有可用的 shell
cat /etc/shells
/bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh
另一個方式是使用 chsh
加上 -l
參數列出可用的 shell,結果也是相同的:
# 列出系統上所有可用的 shell chsh -l
/bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh
更改預設的 Shell 設定
若要更改自己帳號登入預設的 shell,可以使用 chsh
指令,並以 -s
參數指定新的 shell:
# 更改登入預設的 shell 設定 chsh -s /bin/bash
更改預設 shell 時,會要求輸入自己帳號的密碼,經過認證後即可更改預設的 shell。更改完成後,下次登入系統時,就會使用新的 shell 了。
參考資料:nixCraft、StackOverflow、Tecmint