我正在尝试组合一个命令来显示每个用户的默认 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 passwd
follownsswitch
来获取信息,然后使用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