如何更改 Linux 中的默认用户 Shell
shell 或命令行界面是 Linux 操作系统的重要组成部分,为用户提供了与系统交互的强大方式。
Linux 系统上的每个用户都与一个默认 shell 相关联,该默认 shell 决定了他们与系统交互时使用的命令解释器。
出于各种原因,可能需要更改用户的默认 shell,例如个人偏好或需要不同 shell 提供的特定功能。
在本文中,我们将探讨在 Linux 中更改用户默认 shell 的过程。 shell是一个接受和解释命令的程序;有几种开源 shell,例如 bash、sh、ksh、zsh、fish、 以及 Linux 上许多其他鲜为人知的 shell。
Linux Bash 外壳
Bash (/bin/bash) 是大多数(如果不是全部)Linux 发行版上流行的 shell,它通常是用户帐户的默认 shell。
在 Linux 中更改用户 shell 的原因有多种,包括:
- 使用 nologin shell 阻止或禁用 Linux 中的普通用户登录。
- 在将用户命令发送到 shell 执行之前,使用 shell 包装器脚本或程序来记录用户命令。在这里,您将 shell 包装器指定为用户的登录 shell。
- 满足用户的需求(想要使用特定的 shell),尤其是具有管理权限的用户。
使用 useradd 或 adduser 实用程序创建用户帐户时,--shell
标志可用于指定用户登录 shell 的名称,而不是在相应配置文件中指定的名称。
可以从基于文本的界面或通过 SSH 从远程 Linux 计算机访问登录 shell。但是,如果您通过图形用户界面 (GUI) 登录,则可以从终端模拟器(例如 xterm、konsole 等)访问 shell。
列出 Linux 系统上可用的 Shell
在 Linux 中,文件 /etc/shells 通常用于存储系统上已安装的有效登录 shell 的列表。此文件有助于识别用户可以使用 chsh 等命令将哪些 shell 设置为其默认 shell。
要查看 Linux 系统上可用的 shell 列表,可以使用以下命令:
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/tmux
/usr/bin/screen
在继续操作之前,请注意:
- 用户可以将自己的 shell 更改为任何内容:但是,这些 shell 必须列在 /etc/shells 文件中。
- 只有 root 可以运行 /etc/shells 文件中未列出的 shell。
- 如果帐户具有受限制的登录 shell,则只有 root 可以更改该用户的 shell。
查找 Linux 中当前的 Shell
在更改默认用户的 shell 之前,重要的是通过运行以下 echo 命令来确定当前 shell,该命令显示登录用户的当前 shell。
echo $SHELL
/bin/bash
输出显示用户当前正在使用 Bash (/bin/bash) shell。
更改 Linux 中的默认 Shell
现在让我们讨论更改默认 Linux 用户 shell 的三种不同方法。
1.usermod实用程序
usermod 命令用于修改用户的帐户详细信息,存储在 /etc/passwd 文件和 -s
或 --shell
选项中用于更改用户的登录 shell。
在这个例子中,我们首先检查用户howtoing的帐户信息以查看他的默认登录shell,然后将其登录shell从/bin/sh更改为/bin/bash,如下所示接下来。
grep tecmint /etc/passwd
sudo usermod --shell /bin/bash tecmint
grep tecmint /etc/passwd
现在,用户“howtoing”的默认 shell 将更改为 bash。
2.chsh实用程序
chsh 命令用于通过使用 -s
或 -shell 选项以交互方式更改用户的默认登录 shell,如图所示。
grep tecmint /etc/passwd
sudo chsh --shell /bin/sh tecmint
grep tecmint /etc/passwd
将“/bin/sh”替换为您要设置的 shell 的实际路径。例如,要将 shell 设置为 sh,您可以使用“/bin/sh”。
请务必注意,对默认 shell 的更改通常会在您下次登录时生效。
上述两种方法都会修改 /etc/passwd 文件中指定的 shell,您可以像下面的第三种方法一样手动编辑该文件。
3.更改/etc/passwd文件中的用户Shell
在此方法中,只需使用您喜欢的任何命令行文本编辑器打开 /etc/passwd 文件并更改特定用户的 shell。
sudo vi /etc/passwd
OR
sudo nano /etc/passwd
找到与要更改其默认 shell 的用户对应的行。例如,如果该行如下所示:
tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/bash
最后一个字段 /bin/bash 代表默认 shell(在本例中为 Bash)。
要将 shell 字段的值更改为所需的 shell,只需指定 shell 的路径 (/bin/zsh),如图所示。
tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/zsh
完成编辑后,保存并关闭文件。
如何安装另一个外壳?
与其他软件包类似,Zsh 和 Fish 等流行的 shell 可以轻松地从您的发行版存储库中安装,如图所示。
在 Linux 中安装 Zsh Shell
要在 Linux 上安装 Zsh,请使用以下适合您的特定 Linux 发行版的命令。
sudo apt install zsh [On Debian, Ubuntu and Mint]
sudo yum install zsh [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/zsh [On Gentoo Linux]
sudo apk add zsh [On Alpine Linux]
sudo pacman -S zsh [On Arch Linux]
sudo zypper install zsh [On OpenSUSE]
在 Linux 中安装 Fish Shell
要在 Linux 上安装 Zsh,请使用以下适合您的特定 Linux 发行版的命令。
sudo apt install fish [On Debian, Ubuntu and Mint]
sudo yum install fish [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/fish [On Gentoo Linux]
sudo apk add fish [On Alpine Linux]
sudo pacman -S fish [On Arch Linux]
sudo zypper install fish [On OpenSUSE]
不要忘记阅读这些相关主题:
在本文中,我们描述了在 Linux 中更改用户 shell 的各种方法。要与我们分享任何想法,请使用下面的评论部分。