更改Linux預設Shell
更改Linux中的預設shell很簡單,它允許您根據需要使用任何shell。大多數Linux系統的預設shell是'bash',您可以將其替換為其他shell,例如sh、fish、dash、zsh等。在Linux中,您可能有很多原因需要更改預設shell;一些主要原因如下:
使用nologin shell停用或阻止普通使用者登入。
更改共享網路上的預設shell以滿足使用者的特定需求。這與許多管理許可權相關聯。
shell包裝器程式/指令碼會延遲使用者命令的執行,直到使用者登入。在這種情況下,對於shell包裝器,使用者登入是特定於shell的。
在Linux中更改使用者shell的方法有很多。在本指南中,我們將瞭解更改Linux系統預設shell的所有可用方法。
如何在Linux中更改預設Shell
首先必須知道系統中安裝了哪個Linux shell才能更改預設shell。在Linux中,'etc/shells'檔案包含所有可用shell的資訊,因此您可以使用以下cat命令列出所有shell詳細資訊:
~$: cat /etc/shells # /etc/shells: valid login shells /bin/sh /bin/bash /usr/bin/bash /bin/rbash /usr/bin/rbash /usr/bin/sh /bin/dash /usr/bin/dash
上面列表中包含的所有shell都可以在Linux系統中使用,您可以將它們中的任何一個替換為您的預設shell。此外,如果您想更改此列表中未列出的其他shell,則必須單獨安裝它。
首先,您必須找到當前的shell才能首先更改使用者shell。在Linux中,/etc/passwd檔案儲存使用者帳戶的基本資訊。登入時需要此資訊,您還可以從中獲取與shell相關的資訊。您可以執行以下任何命令來找出您的當前shell:
~$: grep "^${USER}" /etc/passwd
prateek:x:1000:Prateek Jangid,,,:/home/prateek:/bin/bash
或者,
~$: grep `whoami` /etc/passwd prateek:x:1000:Prateek Jangid,,,:/home/prateek:/bin/bash
或者,
~$: echo $SHELL /bin/bash
或者,
~$: grep "^${USER}" /etc/passwd
PID TTY TIME CMD
2357 pts/0 00:00:00 bash
正如您在上面的輸出中看到的,當前shell是'bash',因此我們將使用各種方法將'bash' shell更改為'sh' shell。
chsh命令
當您沒有root許可權但想更改預設shell時,此命令非常有用。您通常不需要root帳戶即可使用chsh實用程式。
此命令透過修改/etc/passwd檔案來更改使用者的shell。您可以使用-s選項更改shell:
~$: chsh -s <New_Shell>
例如,讓我們透過以下命令將bash更改為sh:
~$: chsh -s /bin/sh
usermod命令
usermod命令可以更改系統帳戶檔案。您可以使用此命令列修改/etc/passwd檔案並更改使用者的shell。使用usermod命令,您可以使用--shell或-s選項更改使用者的登入shell。
~$: sudo usermod --shell <New_Shell>
現在讓我們透過usermod命令將bash替換為sh作為預設shell:
~$: sudo usermod --shell /bin/sh
注意 - 我們在上述方法中更改了當前使用者的預設shell。但是,您也可以更改其他使用者的shell。因此,以下是可以使用的命令,您需要在其中輸入其他使用者的使用者名稱:
~$: chsh -s <New_Shell> <Username> ~$: sudo usermod --shell <New_Shell> <Username>
從/etc/passwd檔案
系統透過上述命令自動修改/etc/passwd檔案以更改預設shell。如果您不想使用這些命令並手動編輯/etc/passwd檔案,則可以透過執行以下命令來實現:
~$: nano /etc/passwd
執行上述命令後,終端將開啟/etc/passwd,現在相應地進行更改。
GNU nano 6.2 /etc/passwd * root:x:0:0:root:/root /bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60: games:/usr/games:/usr/sbin/nologin
正如您所看到的,當前shell是/bin/bash,您可以將其替換為任何shell(sh、zsh、dash)。在這裡,我們將/root /bin/bash更改為/root /bin/bash。
GNU nano 6.2 /etc/passwd * root:x:0:0:root:/root /bin/sh daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60: games:/usr/games:/usr/sbin/nologin
手動更改shell後,儲存檔案並退出。手動編輯/etc/passwd檔案允許您同時更改多個使用者的預設shell,這也很方便。
請注意,儲存此檔案不會對更改的預設shell進行任何驗證。因此,請確保您的shell命令路徑有效。否則,下次登入系統時可能會遇到一些問題。
結論
在本指南中,我們解釋瞭如何使用三種方法更改預設shell。在這裡,我們使用了usermod和chsh實用程式來直接更改當前使用者的預設shell。此外,如果您想更改其他使用者的shell,則必須單獨定義使用者名稱。
您還可以透過編輯etc/passwd檔案來一次手動更改多個使用者的預設shell。因此,使用此方法時,必須特別注意您仍然需要輸入正確的shell。因此,您可以使用上述任何方法更改Linux中的預設shell。
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP