Fish - Um shell fácil de usar

Este artigo mostra a instalação e uso do Shell Fish (Friendly Interactive Shell). É uma alternativa configurável e fácil de usar, ao mais conhecido Bash (Bourne-Again Shell), comumente encontrado como padrão nas distribuições GNU/Linux.

[ Hits: 30.340 ]

Por: Alberto Federman Neto. em 18/09/2013 | Blog: https://ciencialivre.blog/


Trocando o shell padrão



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:
Linux: Fish - Um shell fácil de usar

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.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Instalação e uso geral
   3. Configuração
   4. Trocando o shell padrão
Outros artigos deste autor

Cansou do Konsole e GNOME-Terminal? Existem outros terminais, escolha o seu!

Instalando e Usando a Versão Mais Recente do BleachBit no Linux

Resolvendo problemas de rede em Linux

Utilização de Webcams Antigas no Sabayon Linux com Kernel 5.7 - 2020

Como criar pacotes para o Gentoo ou Sabayon Linux

Leitura recomendada

Gravando um CD multiseção

Integrando o Mercury e o XMMS

Podman - um mecanismo de contêiner sem daemon

Montando um Media Server com o MediaTomb

Promoção RedBug + Viva o Linux

  
Comentários
[1] Comentário enviado por xerxeslins em 18/09/2013 - 18:40h

Creio que não irei usar, mas mesmo assim é muito interessante. Favoritado.

[2] Comentário enviado por eldermarco em 19/09/2013 - 09:53h

Sensacional! Eu acho que já tinha ouvido falar desse fish em algum momento, mas agora vi algo bem mais completo. Deve permanecer com o bash, mas vou dar uma olhada nele para conhecer e ver como anda o desenvolvimento. Nota 10!

[3] Comentário enviado por dimasdaros em 21/09/2013 - 13:06h

Opa, estou testando ele aqui, parece ser bem produtivo.
Uma coisa que não consegui foi usar o auto completar com base no histórico, até que você que comentou que ao digitar `cat` ele já sugeriu o comando, aqui não consegui usar essa função (que no bash é ctrl + r)

Mas estou gostando.
Vlw pela dica.
Abraço.

[4] Comentário enviado por Ang em 22/09/2013 - 17:23h

Olá, bom dia!
Você pode criar uma dica de Shell`s para iniciantes no ´Mundo` Linux?

[5] Comentário enviado por albfneto em 22/09/2013 - 18:42h

Como assim? Uma Dica para iniciante total usar comandos?

Comandos para quem nunca usou? Não vai ficar muito básico?

[6] Comentário enviado por claudiocastelo em 26/09/2013 - 14:27h

Curiosidade, o comando "history" não funciona!

[7] Comentário enviado por albfneto em 27/09/2013 - 00:06h

Claudio e Dimasdaros..

deve ser algo da config de vocês, pq aqui (Dimasdaros) digitei "his" e ele completou!
e o history está funcionando aqui, veja:

[code]
Welcome to fish, the friendly interactive shell
Type help for instructions on how to use fish
albfneto no sabayon dir: ~
↪ history

transmission
amuleadu
amule
sudo equo i --nodeps www-client/chromium
sudo equo i --nodeps www.client/chromium v8 anaconda
sudo equo up
locate mountpoint
sudo equo i util-linux
equo s util-linux
equo s util-linux
sudo equo mask protobuf
sudo equo up sabayonlinux.org
sudo equo up http://sabayon.c3sl.ufpr.br/entropy/
help
exit
ls -a
ls
...........................
/code]

chequem as configs do Fish de vocês, os arquivos citados no artigo

[8] Comentário enviado por juno em 02/10/2013 - 09:38h

Caro albfneto
Muito legal já estou usando ....

[9] Comentário enviado por removido em 06/08/2014 - 01:47h

Um grande shell, sem dúvida, uma pena os devs não darem muita moral para ele.

[10] Comentário enviado por guimaraesrocha em 22/08/2014 - 21:23h

Mais um shell para testar, bom artigo.

[11] Comentário enviado por uberlan em 23/10/2014 - 23:37h

Muito obrigado pela dica. Me salvou de uma...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts