Si vous ne pouvez pas courir chsh
parce 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 chsh
tant que non-root car le système que vous utilisez est configuré pour chsh
ne pas fonctionner, par exemple parce que le système utilise NIS ou LDAP plutôt que simplement le /etc/passwd
fichier. 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 chsh
normalement. 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 -l
manuellement 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, sh
et bash
peut à la fois exécuter $HOME/.profile
, et csh
et tcsh
peut à la fois exécuter $HOME/.login
et $HOME/.cshrc
(bien que des fichiers de démarrage spécifiques à un shell .bashrc
, tels que .bash_profile
, et .tcshrc
puissent les remplacer). Si votre shell par défaut est /bin/csh
et que vous souhaitez l'utiliser /bin/tcsh
, la mise .login
à jour de votre appel à /bin/tcsh -l
créer peut créer une boucle infinie. zsh
n'arrive pas à exécuter des bash
fichiers 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 if
fichier 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.)
zsh
le.bashrc
fichier. Déconnectez-vous et connectez-vous et c'est fait!