Se non riesci a eseguire chshperché non hai i privilegi di amministratore, parla con qualcuno che lo possiede .
Molto probabilmente non puoi usarlo chshcome non root perché il sistema che stai utilizzando è configurato in modo che chshnon funzionerebbe, ad esempio perché il sistema utilizza NIS o LDAP anziché solo il /etc/passwdfile. O forse l'amministratore del tuo sistema vuole solo mantenere un certo controllo.
La procedura per modificare la shell dipende dalle politiche dell'organizzazione. Potrebbe esserci un comando locale che fa ciò che chshnormalmente fa. Oppure potresti dover inviare un ticket di supporto che richiede una modifica della shell.
La maggior parte delle altre risposte sono buone, ma se i tuoi amministratori sono ragionevolmente reattivi potresti non preoccuparti di hackerare gli script di avvio. Probabilmente invocerei solo zsh -lmanualmente dopo aver effettuato l'accesso fino a quando l'amministratore non si aggiorna per aggiornare il mio account.
Un'altra cosa da tenere a mente: a volte diverse shell possono usare gli stessi file di avvio. Ad esempio, she bashpuò sia eseguire $HOME/.profilee cshe tcshpuò sia eseguire $HOME/.logine $HOME/.cshrc(anche se i file di avvio specifici del guscio piace .bashrc, .bash_profilee .tcshrcpuò sovrascrivere quelli). Se la shell predefinita è /bin/cshe si desidera utilizzare /bin/tcsh, l'aggiornamento .loginper invocare /bin/tcsh -lpotrebbe creare un ciclo infinito. zshnon capita di eseguire bashfile di avvio specifici, quindi non è un problema per te.
La maggior parte dei gusci di impostare le variabili che identificano quale shell si sta eseguendo ( $BASH_VERSION, $tcsh, $ZSH_VERSION). Se hai intenzione di scrivere il codice di avvio per invocare la tua shell preferita, non è una cattiva idea racchiuderla in un ifmodo, quindi viene eseguita solo se non stai già eseguendo quella shell. Usando il codice dalla risposta di konsolebox :
if [ "${ZSH_VERSION:-unset}" = "unset" ] ; then
export SHELL=/bin/zsh
exec /bin/zsh -l
fi
(La complicazione aggiuntiva del controllo "${ZSH_VERSION:-unset}"anziché solo "$ZSH_VERSION"la possibilità che tu abbia fatto set -o unset, un'opzione che fa sì che un riferimento a una variabile non definita sia un errore.)
zshil.bashrcfile. Esci e accedi e fatto!