Como alterar seu shell padrão no Linux com chsh

Um prompt de shell estilizado em um sistema de laptop Linux no estilo Ubuntu.
Fatmawati Achmad Zaenuri / Shutterstock

O Bash não é o único shell do Linux. É fácil experimentar outros shells, como o Zsh , que é muito popular. Quando encontrar um de que goste, use o chshcomando para torná-lo seu shell padrão. Vamos 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 executar seu lance sozinho, ele o faz. Se precisar de ajuda externa, ele pesquisa o caminho e encontra os programas que podem fazer tudo o que você solicitar.

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 deles executa essas tarefas à sua maneira e tem seus próprios recursos especiais e idiossincrasias.

Os shells tendem a ser projetados por pessoas que desejam que as coisas se comportem de uma maneira específica. Se o seu pensamento estiver alinhado com o do designer, essa concha pode muito bem ser uma boa opção para você. Além disso, é fácil tentar um novo shell no Linux.

Na maioria das distribuições Linux, incluindo 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 não olhar!

Um balde cheio de conchas

Já cobrimos os diferentes shells do Linux  antes, mas aqui está uma rápida introdução aos mais comuns:

  • bash: O Bourne  again shell é o padrão em muitas distribuições.
  • rbash: Este   shell restrito bash fornece funcionalidade mínima para a pessoa ou script em execução nele.
  • ash: o shell Almquist  é uma versão mais leve do bash.
  • traço: O Debian Alquist Shell é o script de shell padrão no Ubuntu. Enquanto bashé o login padrão e o shell interativo,  dashé usado para executar processos do sistema porque é muito mais leve que o bash.
  • zsh: O shell Z  é uma versão moderna da bashfamília de shells. Ele oferece melhorias interessantes, como verificações ortográficas de comandos e correções sugeridas.
  • peixe: Esta  concha interativa amigável  foi escrita do zero e não é derivada de nenhuma outra família de conchas. Ele foi projetado para ser amigável. Entre suas muitas outras vantagens, o fish oferece sugestões de comandos com base no seu histórico e no conteúdo da pasta atual, semelhante ao texto preditivo .
  • ksh: O KornShell  fornece uma linguagem de script particularmente forte.
Recomendado:  Como fazer uma captura de tela no Windows 11

Liste os shells instalados

Para ver quais shells estão instalados em seu computador, use este comando. Ele simplesmente lista o conteúdo do /etc/shellsarquivo:

cat / etc / shells

cat / etc / shells em uma janela de terminal.

Mencionamos  bash, dashe rbash, mas o que é sh?

shé a concha Thompson , escrita em 1971 por Ken Thompson, da famosa Bell Labs . Ele não é mais mantido e há muito foi substituído por estruturas modernas. Ele é incluído exclusivamente 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 shshell para executar o script. Você realmente tem aquele shell antigo em sua máquina e ele está sendo usado para executar seus scripts? O whichcomando nos dirá qual programa realmente é executado quando você digita um comando.

Vamos ver o que funciona quando você digita sh:

qual sh

Isso parece encontrar um binário. se cavarmos um pouco mais fundo, no entanto, veremos que é um link simbólico que realmente aponta para dasho shell leve usado para executar scripts:

ls -l / bin / sh

que sh em uma janela de terminal.

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  fishshell e defini-lo como padrão para  dave. No Ubuntu, digitamos o seguinte comando:

sudo apt-get install fish

sudo apt-get install fish em uma janela de terminal.

No Manjaro, use pacman:

sudo pacman -Sy fish

sudo pacman -Sy fish em uma janela de terminal.

No Fedora, digite o seguinte:

sudo dnf install fish

sudo dnf install fish em uma janela de terminal.

Quando a instalação for concluída, você pode verificar os shells instalados mais uma vez:

cat / etc / shells

cat / etc / shells em uma janela de terminal.

Nosso novo shell aparece como /usr/bin/fish. Anote esse caminho – você precisará dele em breve.

Recomendado:  O que significa “AF” e como você o usa?

A variável de ambiente $ SHELL

A $SHELL variável de ambiente contém o nome do seu shell atual. Podemos verificar para qual está definido  echo:

echo $ SHELL

Vamos começar o fishshell:

peixe

Agora, vamos verificar novamente o que a $SHELLvariável de ambiente diz:

echo $ SHELL

echo $ SHELL em uma janela de terminal.

Na primeira vez que usamos echo $SHELL, estamos no bashshell. A variável de ambiente contém o caminho para o bashexecutável /bin/bash.

Quando lançamos o fishshell, recebemos uma mensagem amigável de boas-vindas e o prompt de comando muda. O que pode ser surpreendente é que o   $SHELLambiente ainda mantém o caminho para o bashexecutável /bin/bash,. Tudo bem – isso é normal.

Quando você inicia um novo shell (ou qualquer outro programa), ele herda o ambiente do shell pai. Portanto, o fishshell herda as variáveis ​​de ambiente globais e exportadas do bashshell. Como o valor na $SHELLvariável de ambiente não foi alterado, ele tem o mesmo valor no fishshell que tinha no bashshell.

Estamos funcionando fishcomo qualquer outro programa. Também podemos usar  exit para sair do fishshell. Ele fecha como qualquer outro programa e voltamos ao bashshell.

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 sua concha.

Se você decidir tornar o  fish—ou qualquer outro shell — seu padrão, você precisará usar o chshcomando.

O comando chsh

O chshcomando permite que você altere seu shell padrão. O truque é estar ciente de que isso permite que você altere o login padrão e os shells interativos padrão. Você pode querer mudar um ou outro, ou ambos.

Recomendado:  Daily News Roundup, 09/04/19: O problema violento dos videogames do Google

Sempre que você efetua login para obter um prompt de comando, você usa o shell configurado para ser o seu shell de login. Quando você já estiver logado e abrir uma janela de terminal, use o shell configurado para ser o seu shell interativo. Podem ser shells iguais ou diferentes.

Para definir seu shell de login, use chshsem parâmetros:

chsh

chsh em uma janela de terminal.

Sua senha será solicitada. Em seguida, você deve digitar o caminho para o novo shell e pressionar Enter.

Se fizermos uma conexão remota a este computador de teste de outro, nos encontraremos no fishshell assim que fizermos login.

Conexão SSH mostrando o fish shell como o shell de login, em uma janela de terminal.

Para alterar seu shell interativo, use  chsha -sopção (shell). Passe o caminho para o novo shell na linha de comando:

chsh -s / usr / bin / fish

chsh -s / usr / bin / fish em uma janela de terminal.

Sua senha será solicitada e você retornará ao prompt de comando do shell atual. Você precisa fazer logout e login novamente para que a alteração tenha efeito. Ao fazer isso, você verá a saudação e o fishprompt de comando do shell.

$SHELLvariável de ambiente agora contém o caminho para seu novo shell padrão:

echo $ SHELL

echo $ SHELL em uma janela de terminal.

Alterar 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

sudo chsh -s / usr / bin / fish mary em uma janela de terminal.

Quando  marypróximos registros em, ela vai ver o novo shell quando ela abre uma janela de terminal.

usuário mary no prompt de comando do fish shell, em uma janela de terminal.

Todo mundo tem um favorito

Contanto que você se sinta confortável com sua escolha de concha e funcione para você, ótimo! Lembre-se de que 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 testá-lo sem fazer nenhuma alteração na configuração do computador. Quando estiver pronto para dar o nó, chshirá realizar a cerimônia para você.