
Ich versuche, einen einzelnen Befehl zusammenzustellen, der die Standard-Shell jedes Benutzers anzeigt. Bei der Recherche kann ich hauptsächlich Befehle finden, mit denen die Standard-Shell geändert werden kann, z. B., chsh -s /bin/ksh
aber nicht, um die aktuelle Aufgabe auszuführen.
Weiß jemand, wie man dies unter CentOS erreichen kann?
Antwort1
Eine andere Möglichkeit, es zu tun
getent passwd | cut -d: -f1,7
Antwort2
Sie können die /etc/passwd
Datei analysieren, die den Benutzernamen und die Login-Shell-Liste sowie andere relevante Informationen zu allen Benutzerkonten des Systems enthält.
Der Benutzername wird im :
ersten (separaten) Feld und die Login-Shell im siebten (letzten) Feld gespeichert.
Sie können awk
die Felder also mit ein wenig Formatierung dazwischen ausdrucken, um sie hübscher zu gestalten:
awk -F':' '{ print $1 " " FS " " $NF }' /etc/passwd
Wenn Sie Dienste wie diesen verwenden, ldap
die kein lokales Dateisystem nutzen, können Sie getent passwd
Folgendes verwenden nsswitch
, um die Informationen abzurufen, und dann awk
Folgendes verwenden:
getent passwd | awk -F':' '{ print $1 " " FS " " $NF }'
Beispiel:
% 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
Antwort3
Diese Informationen werden in /etc/passwd gespeichert:
cut -d: -f1,7 /etc/passwd