Si vous ne pouvez pas courir chshparce que vous n'avez pas les privilèges d'administrateur, parlez à quelqu'un qui en a .
Très probablement, vous ne pouvez pas utiliser en chshtant que non-root car le système que vous utilisez est configuré pour chshne pas fonctionner, par exemple parce que le système utilise NIS ou LDAP plutôt que simplement le /etc/passwdfichier. Ou peut-être l'administrateur de votre système veut-il simplement garder un certain contrôle.
La procédure de modification de votre shell dépend des stratégies de votre organisation. Il peut y avoir une commande locale qui fait ce que fait chshnormalement. Ou vous devrez peut-être soumettre un ticket de support demandant un changement de shell.
La plupart des autres réponses sont bonnes, mais si vos administrateurs sont raisonnablement réactifs, vous ne voudrez peut-être pas déranger vos scripts de démarrage. J'appellerais probablement juste zsh -lmanuellement après la connexion, jusqu'à ce que l'administrateur se mette à jour pour mettre à jour mon compte.
Une autre chose à garder à l’esprit: Parfois, différents shells peuvent utiliser les mêmes fichiers de démarrage. Par exemple, shet bashpeut à la fois exécuter $HOME/.profile, et cshet tcshpeut à la fois exécuter $HOME/.loginet $HOME/.cshrc(bien que des fichiers de démarrage spécifiques à un shell .bashrc, tels que .bash_profile, et .tcshrcpuissent les remplacer). Si votre shell par défaut est /bin/cshet que vous souhaitez l'utiliser /bin/tcsh, la mise .loginà jour de votre appel à /bin/tcsh -lcréer peut créer une boucle infinie. zshn'arrive pas à exécuter des bashfichiers de démarrage spécifiques, ce n'est donc pas un problème pour vous.
La plupart des shells définir des variables qui identifient shell que vous êtes en cours d' exécution ( $BASH_VERSION, $tcsh, $ZSH_VERSION). Si vous envisagez d'écrire du code de démarrage pour appeler votre shell préféré, ce n'est pas une mauvaise idée de l'inclure dans un iffichier pour qu'il ne soit exécuté que si vous n'exécutez pas déjà ce shell. En utilisant le code de la réponse de konsolebox :
if [ "${ZSH_VERSION:-unset}" = "unset" ] ; then
export SHELL=/bin/zsh
exec /bin/zsh -l
fi
(La complication ajoutée de la vérification au "${ZSH_VERSION:-unset}"lieu de simplement "$ZSH_VERSION"permettre la possibilité que vous avez faite set -o unset, une option qui fait qu'une référence à une variable non définie est une erreur.)
zshle.bashrcfichier. Déconnectez-vous et connectez-vous et c'est fait!