Como alterar seu shell padrão no Linux com chsh
Publicados: 2022-01-29 Bash não é o único shell do Linux. É fácil experimentar outros shells, como o Zsh, que é muito popular. Quando você encontrar um que você gosta, use o comando chsh
para torná-lo seu shell padrão. Nós vamos te mostrar como.
Por que um shell é importante
O shell fica entre você e o sistema operacional. Ele fornece o ambiente dentro de uma janela de terminal que permite digitar comandos e executar programas. O shell verifica sua entrada e descobre o que você deseja. Se ele pode realizar seu próprio lance, ele o faz. Se precisar de ajuda externa, ele pesquisa o caminho e encontra os programas que podem fazer o que você solicitou.
Existem muitos shells diferentes disponíveis no Linux. Todos eles permitem que você execute as mesmas tarefas principais: explorar o sistema de arquivos, trabalhar com arquivos, iniciar programas e executar scripts. No entanto, cada um executa essas tarefas à sua maneira e tem suas próprias características e idiossincrasias.
Conchas tendem a ser projetadas por pessoas que querem que as coisas se comportem de uma maneira específica. Se o seu pensamento se alinha com o desse designer, esse shell pode ser uma boa opção para você. Além disso, tentar um novo shell no Linux é fácil.
Na maioria das distribuições Linux, incluindo o Ubuntu, o shell padrão é bash
. Ele faz um ótimo trabalho e é muito capaz. No entanto, outro shell pode oferecer uma diferença de economia de tempo que teria um grande impacto em seu fluxo de trabalho. Você nunca saberá se você não olhar!
RELACIONADO: O que é ZSH e por que você deve usá-lo em vez do Bash?
Um balde de conchas
Nós cobrimos os diferentes shells do Linux antes, mas aqui está uma rápida introdução aos mais comuns:
- bash: O shell Bourne novamente é o padrão em muitas distribuições.
- rbash: Este shell
bash
restrito fornece funcionalidade mínima para a pessoa ou script em execução nele. - ash: A concha Almquist é uma versão mais leve do bash.
- dash: O Debian Alquist Shell é o shell script padrão no Ubuntu. Embora o
bash
seja o login padrão e o shell interativo, odash
é usado para executar processos do sistema porque é muito mais leve que obash
. - zsh: O shell Z é uma versão moderna da família de shells
bash
. Ele oferece melhorias interessantes, como verificações ortográficas de comandos e correções sugeridas. - fish: Este amigável shell interativo foi escrito do zero e não é derivado de nenhuma das outras famílias de shell. Destina-se a ser amigável. Entre suas muitas outras vantagens, o fish oferece sugestões de comandos com base em seu histórico e no conteúdo da pasta atual, semelhante ao texto preditivo.
- ksh: O KornShell fornece uma linguagem de script particularmente forte.
RELACIONADO: Qual é a diferença entre Bash, Zsh e outros shells Linux?
Listar os shells instalados
Para ver quais shells estão instalados em seu computador, use este comando. Ele simplesmente lista o conteúdo do arquivo /etc/shells
:
gato /etc/shells
Mencionamos bash
, dash
e rbash
, mas o que é sh
?
sh
é a concha de Thompson, escrita em 1971 por Ken Thompson, do Bell Labs. Não é mais mantido e há muito foi substituído por shells modernos. Ele está incluído apenas para manter a compatibilidade com scripts mais antigos que ainda têm o seguinte como primeira linha:
#!/bin/sh
Isso instrui o sistema a usar o shell sh
para executar o script. Você realmente tem esse shell antigo em sua máquina e ele está sendo usado para executar seus scripts? O comando which
nos dirá qual programa realmente é executado quando você digita um comando.
Vamos ver o que é executado quando você digita sh
:
que sh
Isso parece encontrar um binário. se aprofundarmos um pouco mais, veremos que é um link simbólico que na verdade aponta para dash
, o shell leve usado para executar scripts:
ls -l /bin/sh
Essa é uma maneira simples e leve de fornecer uma rede de segurança para scripts que esperam encontrar sh
em sistemas modernos.
Instalando outro shell
Vamos instalar o fish
shell e defini-lo como padrão para dave
. No Ubuntu, digitamos o seguinte comando:
sudo apt-get install fish
No Manjaro, use pacman
:
sudo pacman -Sy fish
No Fedora, digite o seguinte:
sudo dnf instalar peixe
Quando a instalação estiver concluída, você poderá verificar os shells instalados mais uma vez:
gato /etc/shells
Nosso novo shell aparece como /usr/bin/fish
. Anote esse caminho - você precisará dele em breve.
A variável de ambiente $SHELL
A variável de ambiente $SHELL
contém o nome do seu shell atual. Podemos verificar qual está definido com echo
:
echo $SHELL
Vamos começar a casca do fish
:
peixe
Agora, vamos verificar novamente o que a variável de ambiente $SHELL
diz:
echo $SHELL
A primeira vez que usamos echo $SHELL
, estamos no shell bash
. A variável de ambiente contém o caminho para o executável bash
, /bin/bash
.
Quando iniciamos o shell de fish
, recebemos uma mensagem de boas-vindas amigável e o prompt de comando muda. O que pode ser surpreendente é que o ambiente $SHELL
ainda mantém o caminho para o executável bash
, /bin/bash
. Tudo bem — isso é normal.
Quando você inicia um novo shell (ou qualquer outro programa), ele herda o ambiente do shell pai. Assim, o fish
shell herda as variáveis de ambiente globais e exportadas do bash
shell. Como o valor na variável de ambiente $SHELL
não foi alterado, ele tem o mesmo valor no shell de fish
que tinha no bash
shell.
Estamos executando fish
como qualquer outro programa. Também podemos usar exit
para sair da casca do fish
. Ele fecha como qualquer outro programa e retornamos ao shell bash
.
Isso é ótimo para experimentar novos shells, ver o que eles podem fazer e se você se dá bem com eles. Você pode explorar antes de dar o salto e adotar um como seu escudo.
Se você decidir tornar o fish
—ou qualquer outra concha— seu padrão, você precisará usar o comando chsh
.
O comando chsh
O comando chsh
permite que você altere seu shell padrão. O truque é estar ciente de que ele permite que você altere o login padrão e os shells interativos padrão. Você pode querer mudar um ou outro, ou ambos.
Sempre que você efetua login para obter um prompt de comando, você usa o shell configurado para ser seu shell de login. Quando você já está logado e abre uma janela de terminal, você usa o shell configurado para ser seu shell interativo. Estes podem ser os mesmos ou diferentes shells.
Para definir seu shell de login, use chsh
sem parâmetros:
chsh
Você é solicitado a fornecer sua senha. Em seguida, você deve digitar o caminho para o novo shell e pressionar Enter.
Se fizermos uma conexão remota com este computador de teste a partir de outro, nos encontraremos na concha do fish
assim que fizermos login.
Para alterar seu shell interativo, use chsh
com a opção -s
(shell). Passe o caminho para o novo shell na linha de comando:
chsh -s /usr/bin/fish
Você é solicitado a fornecer sua senha e retorna ao prompt de comando do seu shell atual. Você precisa sair e entrar novamente para que a alteração tenha efeito. Ao fazer isso, você verá a saudação e o prompt de comando da concha de fish
.
A variável de ambiente $SHELL
agora contém o caminho para seu novo shell padrão:
echo $SHELL
Alterando o Shell de outra conta de usuário
Se você tiver privilégios de root e puder usar sudo
, poderá alterar os shells de outras contas de usuário. O comando é o mesmo de antes, com a adição do nome de usuário dessa pessoa adicionado à linha de comando:
sudo chsh -s /usr/bin/fish mary
Quando mary
fizer logon, ela verá o novo shell quando abrir uma janela de terminal.
Todo mundo tem um favorito
Contanto que você esteja confortável com sua escolha de shell e funcione para você, isso é ótimo! Apenas lembre-se, ele deve ser capaz de executar scripts comuns, como rotinas de instalação. Para os shells mencionados aqui, isso não deve ser um problema.
Claro, você também pode baixar e instalar um novo shell e levá-lo para um test drive sem fazer nenhuma alteração na configuração do seu computador. Quando você estiver pronto para dar o nó, chsh
realizará a cerimônia para você.
Comandos Linux | ||
arquivos | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · tipo · renomear · zip · descompactar · montar · umount · instalar · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · converter · rclone · triturar · srm | |
Processos | alias · tela · topo · legal · renice · progresso · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · tempo limite · parede · sim · matar · dormir · sudo · su · tempo · groupadd · usermod · grupos · lshw · desligar · reiniciar · parar · desligar · passwd · lscpu · crontab · data · bg · fg | |
Rede | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
RELACIONADO: Melhores laptops Linux para desenvolvedores e entusiastas