Sie in der Datei/etc/passwd-Datei für aktuelle Benutzername grep können, und schneiden Sie die entsprechende Spalte von Informationen zu extrahieren:
grep ^$(id -un): /etc/passwd | cut -d : -f 7-
$(id -un)
sind ein sicherer als $USER
, um den Benutzernamen zu erhalten. Die Verwendung von ^
vor dem Benutzernamen und :
nach stellt sicher, dass Sie keine falsche Übereinstimmung erhalten, wenn Ihr Benutzername ein Unterabschnitt eines anderen Benutzernamens ist.
$SHELL
kann auch verwendet werden, wie vorgeschlagen. Es wird jedoch nicht funktionieren, wenn chsh
in der aktuellen Shell verwendet wurde, da die Variable nicht aktualisiert wird. Auch ist die Variable nicht gegen Änderungen geschützt, so dass sie theoretisch auf etwas ganz anderes gesetzt werden kann.
Aktualisieren, um eine OS X-kompatible Lösung zu versuchen. Wahrscheinlich nicht optimal regexp:
grep ^.*:.*:$(id -u): /etc/passwd | cut -d : -f 7-
Dies basiert auf Benutzer-IDs. Wenn der gesamte Benutzereintrag fehlt, nicht nur der Benutzername, muss osx dies an anderer Stelle speichern.
möglich Duplikat [Wie die aktuell Shell zu bestimmen, auf ich arbeite?] (http: // Stackoverflow. com/questions/3327013/how-to-bestimmen-the-current-shell-im-arbeiten-on) – TheHippo
Denken Sie auch an die Existenz e von http://unix.stackexchange.com/ :) –
Nein, das ist die * aktuelle * Shell und nicht die * Standard * Shell des Benutzers. – zwol