from–https://www.howtoing.com/change-a-users-default-shell-in-linux/

在本文中,我们将介绍如何在Linux中更改用户的shell。 shell是接受和解释命令的程序;有几个shell,如bash,sh,ksh,zsh,fish和许多其他不太知名的shell,可以在Linux上使用。

Bash/ bin / bash )在大多数Linux系统中都是受欢迎的shell,通常是用户帐户的默认shell。

另请阅读5最常用的Linux开源Shell

在Linux中更改用户的shell有几个原因,其中包括:

  1. 使用nologin shell 阻止或禁用 Linux中的普通用户登录
  2. 使用shell包装器脚本或程序登录用户命令,然后将其发送到shell以执行。在这里,您将shell包装指定为用户的登录shell。
  3. 满足用户的需求(希望使用特定的shell),特别是具有管理权限的用户。

使用useradd或adduser实用程序创建用户帐户时,可以使用--shell标志指定用户登录shell的名称,而不是在相应的配置文件中指定。

可以从基于文本的界面或通过远程Linux机器的SSH访问登录shell。但是,如果您通过图形用户界面(GUI)登录,则可以从终端仿真器(如xtermkonsole等)访问外壳。

首先列出您的Linux系统上的所有可用shell,然后输入。

# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/dash

在进一步之前,请注意:

  • 用户可以将自己的shell更改为任何事物:但是必须列在/ etc / shells文件中。
  • 只有root可以运行未列在/ etc / shells文件中的shell
  • 如果一个帐号有一个受限的登录shell,那么只有root可以改变该用户的shell。

现在我们来讨论三种不同的方式来改变Linux用户shell。

usermod实用程序

usermod是用于修改存储在/ etc / passwd文件中的用户帐户详细信息的实用程序, -s--shell选项用于更改用户的登录shell。

在这个例子中,我们首先检查用户howtoing的帐户信息以查看他的默认登录shell,然后将其登录shell从/ bin / sh更改为/ bin / bash ,如下所示。

# grep howtoing /etc/passwd
# usermod --shell /bin/bash howtoing
# grep howtoing /etc/passwd
使用Usermod更改User Shell

使用Usermod更改User Shell

chsh实用程序

chsh是一个命令行实用程序,用于使用-s-shell选项更改登录shell。

# grep howtoing /etc/passwd
# chsh --shell /bin/sh howtoing
# grep howtoing /etc/passwd
使用chsh更改用户Shell

使用chsh更改用户Shell

上述两种方法都修改/ etc / passwd文件中指定的shell,您可以按照下面的第三种方法手动编辑。

3.更改/ etc / passwd文件中的用户Shell

在这种方法中,只需使用任何您喜爱的命令行文本编辑器打开/ etc / passwd文件,并更改特定的用户shell。

# vi /etc/passwd
在密码文件中更改用户Shell

在密码文件中更改用户Shell

完成编辑后,保存并关闭文件。