Usando vários shells
Vimos na
página 2, que para você usar ou testar o shell fish (ou outros shells), mantendo bash como padrão, é fácil.
1. Basta executar o nome do shell como comando (como usuário comum):
fish # Ou o nome do shell que se quer: dash, zsh, etc.
Ou:
/bin/fish
Assim já está usando fish, mas seu prompt principal é bash.
Para voltar para bash, feche o terminal e reabra. Ou execute:
bash
Ou:
/bin/bash
Eu uso assim, porque é mais simples, seguro e porque estou testando vários shells.
** Se for deletar o pacote fish, porque já testou e não gostou, lembre de voltar para o bash, antes!
Na imagem abaixo, três terminais GNOME com meus três shells. O de cima é zsh, o do meio é bash, e o de baixo, é fish:
2. Para ver qual o seu shell padrão e quais os shells instalados no seu sistema, execute os comandos:
echo $SHELL
Ou:
env | grep $SHELL
chsh -l
Trocando o shell do sistema
3. Mas, você resolveu mesmo trocar definitivamente o shell padrão para fish, não quer mais usar bash. Não é aconselhável, mas pode ser feito.
Primeiro, não desinstale o pacote bash de sua distribuição, mesmo que não o use mais. Também não altere o shell geral do sistema, o global, nem o shell do root.
A razão para isso: seu sistema usa, e você também pode querer usar scripts.
A maioria dos
Shell Scripts são feitos em bash. Teoricamente, os shells são compatíveis, mas nada é garantido.
Só com muita prática em fish, você pode afirmar que seu script vai ser interpretado corretamente. Lembre que o bash é o interpretador de comandos padrão no seu sistema, e ele precisa de interpretador de comandos!
Para trocar, tente os comandos abaixo, um por um na ordem certa. Isso é necessário, pois dependendo do seu
GNU/Linux e configuração, podem ocorrer problemas nas variáveis de ambiente.
4. Por isso, primeiro tente apenas trocar com o simples comando abaixo, executado como usuário comum:
chsh -s fish
Ou:
chsh /bin/fish
Se tiver um terminal aberto, feche-o e abra-o novamente. Deverá ver o prompt do fish e não mais do bash. Senão, não funcionou!
5. Supondo que não funcionou, repita o comando, modificando-o desta maneira:
chsh -s fish usuário
Onde
usuário, é o seu nome de usuário, aquele que usa para logar no GNU/Linux.
6. Não funcionou de novo, continua em bash. Tente assim:
chsh -s $(which fish) usuário
7. Você está com sorte! (rs!) Nada funcionou até agora, continua bash! (rs...!)
Provavelmente, seu sistema deve ter o bash em variáveis globais, ou em outras pastas, PATHs, não padronizados. Tente como abaixo:
Veja se o fish está entre os shells instalados:
cat /etc/shells
Ou:
more /etc/shells
Está, sim! Então, veja se seu usuário está configurado para usar bash. Tente com o comando abaixo e deverá ver uma linha assim:
cat /etc/passwd | grep usuário
usuário:x:1000:1001:Nome Completo do Usuário:/home/usuário:/bin/bash
Onde
usuário é o seu nome de usuário.
Com um editor de texto em modo root, edite esse arquivo e troque
bash por
fish e salve o arquivo.
Depois, tente reexecutar os comandos dados em 4-6.
Se até agora não trocou, pode tentar como descrito em 8-11. Contudo seria mais seguro deixar em bash o shell padrão mesmo.
Os procedimentos não são recomendados, pois podem alterar as variáveis de ambiente e as configurações globais.
* Se quiser continuar, vá por sua conta e risco!
8. Tente executar os comandos dos itens 4-6, mas como root e não como usuário comum.
9. Ainda não deu! (rsrsrs!)
Procure, olhe dentro, e edite o arquivo "/home/usuário/.bash_profile" como root, colocando uma linha:
export SHELL=/bin/fish
Que equivale a converter seu arquivo de bash em um ".fish_profile", mas é relativamente seguro:
cat ~/.bash_profile
Ou:
more ~/.bash_profile
sudo echo 'export SHELL=/bin/fish' >> ~/.bash_profile
10. Mais coisas a testar, se nada funcionou. Cuidado, está para alterar as variáveis de ambiente:
chsh -s /usr/local/bin/fish
Ou:
chsh -s /usr/local/bin/fish
11. Solução radical, trocar tudo. Cuidado, último recurso, se realmente quer trocar.
Coloque a linha:
set-option -g default-shell "/bin/fish"
...no arquivo "~/.bash_profile" (veja item 9).
Troque para fish direto no seu terminal (Konsole, GNOME Terminal, etc) na interface gráfica ("Configurações") ou com os comandos:
sudo Terminal -e fish
Ou:
sudo SHELL=/bin/fish Terminal
Onde
Terminal, é o nome do executável do seu terminal, isto é:
konsole, gnome-terminal, mate-terminal, etc.
Depois, troque nos arquivos, como root:
# grep -q '^/bin/fish$' /etc/shells
Ou:
# echo '/bin/fish' | tee -a /etc/shells
# chsh -s /bin/fish
Detalhes do procedimento 11, é uma modificação de:
12. Fazendo os procedimentos acima, se seu shell foi trocado para fish, ajuste todas as variáveis de ambiente.
Usando um tutorial como
este, exporte as variáveis do sistema.
Observação: em Sabayon e Gentoo, isso pode ser feito direto com um comando
sudo env-update, mas não sei se isso funcionaria em distribuições não-Gentoo.
Feche o terminal e reabra. Se estiver em fish, finalize executando o comando, abaixo, como usuário normal:
source /etc/profile
Pronto, você trocou seu shell padrão para fish.