在 Linux 中更改用户默认 Shell 的 3 种方法
Shell,即命令行界面,是Linux 操作系统的一个重要组件,为用户提供了与系统交互的强大方式。
Linux 系统上的每个用户都与一个默认 shell 相关联,该 shell 决定了他们与系统交互时使用的命令解释器。
更改用户的默认 shell 可能是出于多种原因而有必要,例如个人偏好或需要不同 shell 提供的特定功能。
在本文中,我们将探讨在 Linux 中更改用户默认 shell 的过程。shell 是一个接受和解释命令的程序;Linux 上有多个开源 shell,例如bash、sh、ksh、zsh、fish以及许多其他不太知名的 shell。
Linux Bash Shell
Bash ( /bin/bash ) 是大多数(如果不是全部)Linux 发行版中流行的 shell ,并且它通常是用户帐户的默认 shell。
在 Linux 中更改用户 shell 的原因有多种,其中包括:
- 使用 nologin shell 阻止或禁用 Linux 中的普通用户登录。
- 使用 shell 包装器脚本或程序在将用户命令发送到 shell 执行之前记录这些命令。在这里,您将 shell 包装器指定为用户的登录 shell。
- 为了满足用户的需求(想要使用特定的 shell),尤其是具有管理权限的用户。
当使用useradd 或 adduser实用程序创建用户帐户时,可以使用该--shell
标志来指定用户登录 shell 的名称,而不是相应配置文件中指定的名称。
可以从基于文本的界面或通过远程 Linux 计算机的 SSH访问登录 shell 。但是,如果通过图形用户界面 (GUI) 登录,则可以从xterm、konsole等终端仿真器访问 shell。
列出 Linux 系统上的可用 Shell
在 Linux 中,文件/etc/shells通常用于存储系统上已安装的有效登录 shell 列表。此文件有助于识别哪些 shell 可供用户使用chsh等命令设置为默认 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 更改为任何内容:但是,必须在/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文件中的用户帐户详细信息,或选项用于更改用户的登录 shell。-s
--shell
在这个例子中,我们首先检查用户示例的帐户信息以查看他的默认登录shell,然后将其登录shell从/bin/sh更改为/bin/bash,如下所示。
grep example /etc/passwd sudo usermod --shell /bin/bash example grep example /etc/passwd
现在用户“ example ”的默认 shell 将更改为bash。
2. chsh 实用程序
chsh命令用于通过使用-s
或–shell选项以交互方式更改用户的默认登录 shell,如图所示。
grep example /etc/passwd sudo chsh --shell /bin/sh example grep example /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 的用户对应的行。例如,如果该行如下所示:
example:x:1000:1000:John Doe:/home/example:/bin/bash
最后一个字段/bin/bash代表默认 shell (在本例中为Bash)。
要将 shell 字段的值更改为所需的 shell,只需指定 shell 的路径 (/bin/zsh),如图所示。
example:x:1000:1000:John Doe:/home/example:/bin/zsh
编辑完成后,保存并关闭文件。
如何安装另一个 Shell?
与其他软件包类似,可以轻松地从发行版的存储库安装流行的 shell,例如 Zsh 和 Fish,如图所示。
在 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 的各种方法。如需与我们分享任何想法,请使用下面的评论部分。