Como manter o último shell de login como shell atual no próximo login?

5

Como título, Como manter o último shell de login como shell atual no próximo login? por exemplo, meu shell padrão é 'bash' e mudei para 'zsh', como posso ter o shell 'zsh' como meu shell atual no próximo login ou terminal aberto?

    
por αғsнιη 12.09.2016 / 15:17

2 respostas

6

Você pode ter um comando nos arquivos .bash_logout e .zlogout para alterar o shell de login atual para o que você está usando.

O comando pode ser

chsh -s "$(which "$(ps -p $$ -ocomm=)")" $USER

Como .bash_logout e .zlogout devem ser originados antes de sair do shell, isso deve alterar o shell de login para o shell atualmente em execução. No entanto, você precisará fornecer uma senha para alterar o shell antes de sair.

Eu usei as informações de esta pergunta do SO e testado com zsh e bash .

    
por Anwar 12.09.2016 / 16:15
1

Pedindo senha para sair é bobo. Eu escrevi algumas idades de código atrás que iria verificar o sistema para o shell mais adequado. Ele servirá aqui.

1) Shell deve ser definido para / bin / sh

2) .profile contém o seguinte

. $HOME/.shell
if which $SHELL >/dev/null
then :
else SHELL=/bin/sh
     PROFILE=$HOME/.sh_profile
fi
export SHELL
BASHRC=$HOME/.bashrc
ZSHRC=$HOME/.zshrc
KSHRC=$HOME/.kshrc

# Don't do this dumb thing on X login
# The redirects on tty are for portability
if tty -s 1<&0 2<&0
then
    exec $SHELL -sc
fi

2) .sh_profile pode estar em branco, mas é melhor:

cd() { command cd  && PS1="'pwd'"$\ }
PS1="'pwd'"$\ 

3) .bashrc contém o seguinte:

[ -f $HOME/.bash_shell ] && rm $HOME/.shell && ln $HOME/.bash_shell $HOME/.shell

4) .bash_shell contém o seguinte

SHELL=/bin/bash
PROFILE=$HOME/.bash_profile

mesmo para outras conchas

    
por Joshua 12.09.2016 / 18:37