傳回每個使用者的預設 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

相關內容