
我正在嘗試組合一個命令來顯示每個使用者的預設 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