Linux

Linux 查詢與更改登入 shell 設定,chsh 指令用法教學與範例

這裡介紹如何在 Linux 中查詢自己帳號預設的登入 shell 設定,並使用 chsh 指令修改預設的 shell。

shell 是介於使用者與 Linux 系統之間的介面,而在 Linux 中常見的 shell 有好多種,例如 shcshtcshbash 等,一般的使用者可以自由選擇偏好的 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 了。

參考資料:nixCraftStackOverflowTecmint

G. T. Wang

個人使用 Linux 經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

Recent Posts

光陽 KYMCO GP 125 機車接電發動、更換電瓶記錄

本篇記錄我的光陽 KYMCO ...

1 年 ago

[開箱] YubiKey 5C NFC 實體金鑰

本篇是 YubiKey 5C ...

2 年 ago

[DIY] 自製竹火把

本篇記錄我拿竹子加上過期的苦茶...

2 年 ago