Se você não pode executar chsh
porque não possui privilégios de administrador, fale com alguém que o faça .
Provavelmente você não pode usar chsh
como não raiz porque o sistema que você está usando está configurado para que chsh
não funcione, por exemplo, porque o sistema usa NIS ou LDAP em vez de apenas o /etc/passwd
arquivo. Ou talvez o administrador do seu sistema só queira manter algum controle.
O procedimento para alterar seu shell depende das políticas da sua organização. Pode haver um comando local que faça o que chsh
normalmente faz. Ou você pode precisar enviar um tíquete de suporte solicitando uma alteração de shell.
A maioria das outras respostas é boa, mas se os administradores forem razoavelmente responsivos, talvez você não queira se incomodar em invadir seus scripts de inicialização. Eu provavelmente apenas invocaria zsh -l
manualmente depois de fazer login até que o administrador atualize minha conta.
Outra coisa a ter em mente: às vezes, shell diferentes podem usar os mesmos arquivos de inicialização. Por exemplo, sh
e bash
tanto pode executar $HOME/.profile
, e csh
e tcsh
tanto pode executar $HOME/.login
e $HOME/.cshrc
(embora os arquivos de inicialização específico do shell como .bashrc
, .bash_profile
e .tcshrc
pode substituir aqueles). Se o seu shell padrão é /bin/csh
e você deseja usar /bin/tcsh
, a atualização de sua .login
chamada /bin/tcsh -l
pode criar um loop infinito. zsh
não executa bash
arquivos de inicialização específicos, portanto, isso não é um problema para você.
A maioria das conchas definir variáveis que identificam quais a Shell você está executando ( $BASH_VERSION
, $tcsh
, $ZSH_VERSION
). Se você estiver escrevendo um código de inicialização para chamar seu shell preferido, não é uma má idéia incluí-lo em um, if
para que ele seja executado apenas se você ainda não estiver executando esse shell. Usando o código da resposta do konsolebox :
if [ "${ZSH_VERSION:-unset}" = "unset" ] ; then
export SHELL=/bin/zsh
exec /bin/zsh -l
fi
(A complicação adicional de verificar, em "${ZSH_VERSION:-unset}"
vez de apenas "$ZSH_VERSION"
permitir a possibilidade que você fez set -o unset
, uma opção que faz com que uma referência a uma variável indefinida seja um erro.)
zsh
no.bashrc
arquivo. Logout e login e pronto!