返回每个用户的默认 shell

返回每个用户的默认 shell

我正在尝试组合一个命令来显示每个用户的默认 shell。通过研究,我主要可以找到更改默认 shell 的命令,例如chsh -s /bin/ksh但不执行手头的任务。

有谁知道如何在 CentOS 上实现这一目标?

答案1

另一种方法

getent passwd | cut -d: -f1,7

答案2

您可以解析该/etc/passwd文件,其中包含用户名和登录 shell 列表以及有关系统所有用户帐户的其他相关信息。

用户名存储在:分隔的第一个字段中,登录 shell 存储在第七个(最后一个)字段中。

因此,您可以使用awk之间的一些格式来打印字段以使其美观:

awk -F':' '{ print $1 " " FS " " $NF }' /etc/passwd

如果您碰巧使用类似的服务ldap不使用本地文件系统,您可以使用getent passwdfollownsswitch来获取信息,然后使用awk

getent passwd | awk -F':' '{ print $1 " " FS " " $NF }'

例子:

% awk -F':' '{ print $1 " " FS " " $NF }' /etc/passwd
root : /bin/bash
daemon : /usr/sbin/nologin
bin : /usr/sbin/nologin
sys : /usr/sbin/nologin
sync : /bin/sync
games : /usr/sbin/nologin
man : /usr/sbin/nologin
lp : /usr/sbin/nologin
mail : /usr/sbin/nologin

答案3

该信息存储在 /etc/passwd 中:

cut -d: -f1,7 /etc/passwd

相关内容