各ユーザーのデフォルトシェルを返す

各ユーザーのデフォルトシェルを返す

各ユーザーのデフォルト シェルを表示する単一のコマンドを作成しようとしています。 調査したところ、デフォルトのシェルを変更するコマンド ( など) がほとんど見つかりましたが、chsh -s /bin/ksh手元のタスクを実行するためのコマンドは見つかりませんでした。

CentOS でこれを実現する方法を知っている人はいますか?

答え1

別の方法

getent passwd | cut -d: -f1,7

答え2

/etc/passwdユーザー名とログインシェルのリスト、およびシステムのすべてのユーザー アカウントに関するその他の関連情報を含むファイルを解析できます。

ユーザー名は:分離された最初のフィールドに保存され、ログイン シェルは 7 番目 (最後) のフィールドに保存されます。

awkしたがって、見栄えを良くするために、間に少し書式を設定してフィールドを印刷するには、次のようにします。

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

ldapローカルファイルシステムを使用しないようなサービスを使用する場合は、getent passwd次の手順に従ってnsswitch情報を取得し、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

関連情報