收集云服务器优惠信息
记录云服务器使用心得

Linux默认Shell是什么,如何更改用户默认Shell?

Shell或命令行界面是Linux操作系统的重要组成部分,为用户提供了强大的交互方式与系统。Linux系统上的每个用户都与一个默认Shell相关联,该默认Shell决定了他们与系统交互时使用的命令解释器。

不过由于各种原因,可能需要更改用户的默认Shell,例如个人偏好或需要不同Shell提供的特定功能。

在本文中,小编主要介绍在Linux系统中更改用户默认Shell的过程。Shell是一个接受和解释命令的程序,Linux系统上有几种开源Shell,如bash、sh、ksh、zsh、fish和许多其它鲜为人知的Shell。

Linux Bash

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

使用Usermod更改用户Shell

现在用户“tecmint”的默认Shell将更改为bash。

2、chsh实用程序

chsh命令用于通过使用-s或-shell选项以交互方式更改用户的默认登录Shell,如下所示:

grep tecmint /etc/passwd
sudo chsh --shell /bin/sh tecmint
grep tecmint /etc/passwd

使用chsh更改用户Shell

注意,将“/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

更改Passwd文件中的用户Shell

找到与要更改其默认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。

赞(0)
网站声明:本文内容由趣云笔记原创,部分资源收集于网络,如有侵权请联系企鹅:2472781824删除。
文章名称:《Linux默认Shell是什么,如何更改用户默认Shell?》
文章链接:https://www.ecscoupon.com/3241.html
本站资源仅供个人学习交流,未经允许不得转载,更不允许用于商业用途。如需转载,请注明来源,感谢理解!