Se non riesci a eseguire chsh
perché non hai i privilegi di amministratore, parla con qualcuno che lo possiede .
Molto probabilmente non puoi usarlo chsh
come non root perché il sistema che stai utilizzando è configurato in modo che chsh
non funzionerebbe, ad esempio perché il sistema utilizza NIS o LDAP anziché solo il /etc/passwd
file. 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 chsh
normalmente 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 -l
manualmente 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, sh
e bash
può sia eseguire $HOME/.profile
e csh
e tcsh
può sia eseguire $HOME/.login
e $HOME/.cshrc
(anche se i file di avvio specifici del guscio piace .bashrc
, .bash_profile
e .tcshrc
può sovrascrivere quelli). Se la shell predefinita è /bin/csh
e si desidera utilizzare /bin/tcsh
, l'aggiornamento .login
per invocare /bin/tcsh -l
potrebbe creare un ciclo infinito. zsh
non capita di eseguire bash
file 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 if
modo, 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.)
zsh
il.bashrc
file. Esci e accedi e fatto!