Lösung 1:
Ich habe im #suse-Kanal auf Freenode danach gefragt, und Miuku schlug dasselbe wie Arul vor, er erwähnte jedoch zwei Dinge:Wenn ich eine Windows-Domäne verwende, könnte ich das loginShell-Attribut setzen.
Leider bin ich in einer Samba-Domäne, also hat das nicht geholfen. Aber sein letzter Vorschlag war perfekt, erhalten Sie die Ausgabe von:
getent passwd USERNAME
Dies wird das gültige Eintragsäquivalent für Ihren Benutzer in /etc/passwd haben, nehmen Sie dieses, fügen Sie es in /etc/passwd ein und aktualisieren Sie die Shell am Ende für den gültigen Pfad der Shell, die Sie verwenden möchten. Auf diese Weise wird es nicht für alle Benutzer geändert, und Sie können sicherstellen, dass sich die Shell auf dem Computer befindet, auf dem Sie dies konfigurieren, bevor Sie die Änderung vornehmen.
Lösung 2:
Ich hatte genau das gleiche Problem. Da nicht alle Maschinen in meiner Domäne zsh installiert haben und ich nicht alle Benutzer betreffen wollte, fügte ich schließlich meine .bashrc:
einif [ -x /usr/bin/zsh ]; then
echo 'starting zsh'
# export SHELL=/bin/zsh #edit: this is probably not what you want, see the comment.
exec /usr/bin/zsh
fi
Das mag unelegant sein, aber zumindest erledigt es die Arbeit.
Lösung 3:
Wenn Sie Zugriff zum Bearbeiten der Konfiguration des Samba-Domänencontrollers haben, können Sie die folgende Eigenschaft festlegen, die es Ihnen ermöglicht, die Shell in smb.conf
festzulegentemplate shell = /bin/zsh
Ich bin mir nicht sicher, was passiert, wenn Sie sich bei einem Computer anmelden, auf dem zsh nicht installiert ist (nicht alle Distributionen haben standardmäßig zsh installiert), aber ich vermute, dass es die Standard-Shell der Distribution aufruft.
Wenn Sie es einfach ausprobieren möchten, geben Sie einfach zsh ein, um eine Subshell zu erhalten, die Sie sicher bereits kennen.