Wenn Sie nicht laufen können, chshweil Sie keine Administratorrechte haben, sprechen Sie mit jemandem, der dies tut .
Höchstwahrscheinlich können Sie nicht chshals Nicht-Root-Benutzer verwendet werden, da das von Ihnen verwendete System so konfiguriert ist, dass chshes nicht funktioniert, z. B. weil das System NIS oder LDAP anstelle nur der /etc/passwdDatei 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 chshnormalen 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 -lmanuell 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, shund bashbeide ausführen kann $HOME/.profile, und cshund tcshkann sowohl ausführen $HOME/.loginund $HOME/.cshrc(obwohl Shell spezifische Startdateien wie .bashrc, .bash_profileund .tcshrcdiejenigen außer Kraft setzen kann). Wenn Ihre Standard-Shell ist /bin/cshund Sie verwenden möchten, /bin/tcshkann das Aktualisieren von .loginto invoke /bin/tcsh -leine Endlosschleife erzeugen. zshfü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, ifsodass 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.)
zshdie.bashrcDatei hinzu. Abmelden und einloggen und fertig!