Wenn Sie nicht laufen können, chsh
weil Sie keine Administratorrechte haben, sprechen Sie mit jemandem, der dies tut .
Höchstwahrscheinlich können Sie nicht chsh
als Nicht-Root-Benutzer verwendet werden, da das von Ihnen verwendete System so konfiguriert ist, dass chsh
es nicht funktioniert, z. B. weil das System NIS oder LDAP anstelle nur der /etc/passwd
Datei verwendet. Oder vielleicht möchte der Administrator Ihres Systems nur die Kontrolle behalten.
Das Verfahren zum Ändern Ihrer Shell hängt von den Richtlinien Ihrer Organisation ab. Möglicherweise gibt es einen lokalen Befehl, der die chsh
normalen Funktionen ausführt. Oder Sie müssen möglicherweise ein Support-Ticket einreichen, um eine Shell-Änderung anzufordern.
Die meisten anderen Antworten sind gut, aber wenn Ihre Administratoren angemessen reagieren, sollten Sie sich nicht die Mühe machen, Ihre Startskripte zu hacken. Ich würde wahrscheinlich nur zsh -l
manuell aufrufen, nachdem ich mich angemeldet habe, bis der Administrator mein Konto aktualisiert hat.
Eine andere Sache, die Sie beachten sollten: Manchmal können verschiedene Shells die gleichen Startdateien verwenden. Zum Beispiel, sh
und bash
beide ausführen kann $HOME/.profile
, und csh
und tcsh
kann sowohl ausführen $HOME/.login
und $HOME/.cshrc
(obwohl Shell spezifische Startdateien wie .bashrc
, .bash_profile
und .tcshrc
diejenigen außer Kraft setzen kann). Wenn Ihre Standard-Shell ist /bin/csh
und Sie verwenden möchten, /bin/tcsh
kann das Aktualisieren von .login
to invoke /bin/tcsh -l
eine Endlosschleife erzeugen. zsh
führt nicht zufällig bash
-spezifische Startdateien aus, daher ist dies für Sie kein Problem.
Die meisten Schalen setzen Variablen , die identifizieren , die Sie laufen Shell ( $BASH_VERSION
, $tcsh
, $ZSH_VERSION
). Wenn Sie Startcode schreiben, um Ihre bevorzugte Shell aufzurufen, ist es keine schlechte Idee, ihn in ein einzuschließen, if
sodass er nur ausgeführt wird, wenn Sie diese Shell nicht bereits ausführen. Verwenden Sie den Code aus der Antwort von konsolebox :
if [ "${ZSH_VERSION:-unset}" = "unset" ] ; then
export SHELL=/bin/zsh
exec /bin/zsh -l
fi
(Die zusätzliche Komplikation des Überprüfens, "${ZSH_VERSION:-unset}"
anstatt nur "$ZSH_VERSION"
die Möglichkeit zu berücksichtigen, die Sie gemacht haben set -o unset
, ist eine Option, die bewirkt, dass ein Verweis auf eine undefinierte Variable ein Fehler ist.)
zsh
die.bashrc
Datei hinzu. Abmelden und einloggen und fertig!