在本文中,我们将介绍如何在Linux中更改用户的shell。 shell是接受和解释命令的程序; 有几个shell,如bash,sh,ksh,zsh,fish和许多其他不太知名的shell,可以在Linux上使用。
Bash ( / bin / bash )在大多数Linux系统中都是受欢迎的shell,通常是用户帐户的默认shell。
另请阅读 : 5最常用的Linux开源Shell
在Linux中更改用户的shell有几个原因,其中包括:
- 使用nologin shell 阻止或禁用 Linux中的普通用户登录 。
- 使用shell包装器脚本或程序登录用户命令,然后将其发送到shell以执行。 在这里,您将shell包装指定为用户的登录shell。
- 满足用户的需求(希望使用特定的shell),特别是具有管理权限的用户。
使用useradd或adduser实用程序创建用户帐户时,可以使用--shell
标志指定用户登录shell的名称,而不是在相应的配置文件中指定。
可以从基于文本的界面或通过远程Linux机器的SSH访问登录shell。 但是,如果您通过图形用户界面(GUI)登录,则可以从终端仿真器(如xterm , konsole等)访问外壳。
首先列出您的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。
在这个例子中,我们首先检查用户youcl的帐户信息以查看他的默认登录shell,然后将其登录shell从/ bin / sh更改为/ bin / bash ,如下所示。
# grep youcl /etc/passwd # usermod --shell /bin/bash youcl # grep youcl /etc/passwd
使用Usermod更改User Shell
chsh实用程序
chsh是一个命令行实用程序,用于使用-s
或-shell选项更改登录shell。
# grep youcl /etc/passwd # chsh --shell /bin/sh youcl # grep youcl /etc/passwd
使用chsh更改用户Shell
上述两种方法都修改/ etc / passwd文件中指定的shell,您可以按照下面的第三种方法手动编辑。
3.更改/ etc / passwd文件中的用户Shell
在这种方法中,只需使用任何您喜爱的命令行文本编辑器打开/ etc / passwd文件,并更改特定的用户shell。
# vi /etc/passwd
在密码文件中更改用户Shell
完成编辑后,保存并关闭文件。
不要忘记阅读这些相关主题:
- 在Linux中了解Shell初始化文件和用户配置文件
- 了解Linux Shell和基本Shell脚本提示 - 第一部分
- 如何编写和使用自定义Shell函数和库
- 了解Shell命令的不同分类及其使用
在本文中,我们描述了在Linux中更改用户shell的各种方法。 与我们分享任何想法,请使用下面的评论部分。