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的原因有多种,主要包括:
- 在Linux中使用nologin Shell阻止或禁用普通用户登录。
- 在将用户命令发送到Shell执行之前,使用Shell包装器脚本或程序来记录用户命令。在这里,你将Shell包装器指定为用户的登录Shell。
- 满足用户的需求(想要使用特定的Shell),尤其是具有管理权限的用户。
使用useradd或adduser实用程序创建用户帐户时,--shell
标志可用于指定用户登录shell的名称,而不是在相应配置文件中指定的名称。
可以从基于文本的界面或通过远程Linux计算机的SSH访问登录Shell。但是,如果你通过图形用户界面(GUI)登录,则可以从终端模拟器访问Shell,例如 xterm、konsole等。
列出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/shell文件中列出。
- 只有root用户才能运行/etc/shell文件中未列出的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。
在此示例中,我们将首先检查tecmint用户的帐户信息以查看其默认登录Shell,然后将其登录Shell从/bin/sh到/bin/bash具体如下:
grep tecmint /etc/passwd sudo usermod --shell /bin/bash tecmint grep tecmint /etc/passwd
现在用户“tecmint”的默认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 或者 sudo nano /etc/passwd
找到与要更改其默认Shell用户对应的行。例如,类似于下面的行:
tecmint:x:1000:1000:Aaron Kili,,,:/home/tecmint:/bin/bash
最后一个字段/bin/bash表示默认Shell(在本例中为bash)。
这样将Shell字段的值更改为所需的Shell,只需指定Shell的路径 (如/bin/zsh)即可,如下所示:
tecmint:x:1000:1000:Aaron Kili,,,:/home/tecmint:/bin/zsh
完成编辑后,保存并关闭文件就可以了。
如何安装另一个Shell?
与其它软件包类似,Zsh和Fish等流行的Shell可以轻松地从你的发行版存储库中安装,详细步骤如下所述。
在Linux中安装Zsh Shell
要在Linux系统上安装Zsh,请使用以下适合你的特定Linux发行版的命令:
sudo apt install zsh [Debian/Ubuntu/Mint] sudo yum install zsh [RHEL/CentOS/Fedora和Rocky/AlmaLinux] sudo emerge -a sys-apps/zsh [Gentoo Linux] sudo apk add zsh [Alpine Linux] sudo pacman -S zsh [Arch Linux] sudo zypper install zsh [OpenSUSE]
在Linux中安装Fish Shell
要在Linux上安装Fish,请使用以下适合你的特定Linux发行版的命令:
sudo apt install fish [Debian/Ubuntu/Mint] sudo yum install fish [RHEL/CentOS/Fedora/Rocky/AlmaLinux] sudo emerge -a sys-apps/fish [Gentoo Linux] sudo apk add fish [Alpine Linux] sudo pacman -S fish [Arch Linux] sudo zypper install fish [OpenSUSE]
总结
以上就是介绍在Linux系统中更改用户默认Shell的几个简单方法,如果有不清楚的小伙伴可以参考上述方法进行操作设置。
众所周知,更改用户默认Shell可以影响用户在系统上的命令行环境和交互方式。每个用户在Linux系统上登录时都会与一个Shell进程关联,Shell是用户与操作系统交互的命令行解释器。不同的Shell提供不同的功能和语法,用户可以根据其偏好选择适合自己的Shell。