A shell, ou interface de linha de comando, é um componente crucial do sistema operacional Linux, fornecendo aos usuários uma maneira poderosa de interagir com o sistema.
Cada usuário em um sistema Linux está associado a um shell padrão, que determina o interpretador de comando que eles usam ao interagir com o sistema.
Mudar o shell padrão de um usuário pode ser necessário por várias razões, como preferência pessoal ou a necessidade de recursos específicos oferecidos por um shell diferente.
Neste artigo, exploraremos o processo de mudança do shell padrão de um usuário no Linux. O shell é um programa que aceita e interpreta comandos; existem vários shells de código aberto como bash, sh, ksh, zsh, fish e muitos outros shells menos conhecidos disponíveis no Linux.
Shell Bash do Linux
Bash (/bin/bash) é um shell popular na maioria, se não em todas as distribuições Linux, e normalmente é o shell padrão para contas de usuário.
Há várias razões para mudar o shell de um usuário no Linux, incluindo as seguintes:
- Para bloquear ou desativar logins de usuários normais no Linux usando um shell nologin.
- Use um script de invólucro de shell ou programa para registrar os comandos do usuário antes que sejam enviados para um shell para execução. Aqui, você especifica o invólucro de shell como o shell de login do usuário.
- Para atender às demandas de um usuário (deseja usar um shell específico), especialmente aqueles com direitos administrativos.
Ao criar contas de usuário com os utilitários useradd ou adduser, a flag --shell
pode ser usada para especificar o nome do shell de login do usuário diferente do especificado nos arquivos de configuração respectivos.
A login shell can be accessed from a text-based interface or via an SSH from a remote Linux machine. However, if you log in via a graphical user interface (GUI), you can access the shell from terminal emulators like xterm, konsole, and many more.
Lista de Shells Disponíveis em um Sistema Linux
No Linux, o arquivo /etc/shells é comumente usado para armazenar uma lista de shells de login válidos instalados no sistema. Este arquivo ajuda a identificar quais shells estão disponíveis para os usuários definirem como seu shell padrão usando comandos como chsh.
Para visualizar a lista de shells disponíveis em um sistema Linux, você pode usar o seguinte comando:
cat /etc/shells
Saída de Exemplo:
# /etc/shells: valid login shells /bin/sh /bin/bash /usr/bin/bash /bin/rbash /usr/bin/rbash /bin/dash /usr/bin/dash /usr/bin/tmux /usr/bin/screen
Antes de prosseguir, observe que:
- A user can change their own shell to anything: which, however, must be listed in the /etc/shells file.
- Apenas o root pode executar um shell não listado no arquivo /etc/shells.
- Se uma conta tiver um shell de login restrito, então apenas o root poderá alterar o shell desse usuário.
Encontre o Shell Atual no Linux
Antes de alterar o shell padrão de um usuário, é importante determinar o shell atual executando o seguinte comando echo, que exibe o shell atual para o usuário conectado.
echo $SHELL /bin/bash
A saída mostra que o usuário está atualmente usando o shell Bash (/bin/bash).
Alterando o Shell Padrão no Linux
Agora vamos discutir três maneiras diferentes de alterar o shell padrão do usuário no Linux.
1. Utilitário usermod
O comando usermod é usado para modificar os detalhes da conta do usuário, armazenados no arquivo /etc/passwd e a opção -s
ou --shell
é usada para alterar o shell de login do usuário.
Neste exemplo, primeiro verificaremos as informações da conta do usuário tecmint para visualizar seu shell de login padrão e, em seguida, alteraremos seu shell de login de /bin/sh para /bin/bash da seguinte maneira.
grep tecmint /etc/passwd sudo usermod --shell /bin/bash tecmint grep tecmint /etc/passwd

Agora, o shell padrão para o usuário “tecmint” será alterado para bash.
2. Utilitário chsh
O comando chsh é usado para alterar o shell de login padrão do usuário de forma interativa usando a opção -s
ou –shell como mostrado.
grep tecmint /etc/passwd sudo chsh --shell /bin/sh tecmint grep tecmint /etc/passwd

Substitua “/bin/sh” pelo caminho real do shell que deseja definir. Por exemplo, para definir o shell como sh, você usaria “/bin/sh“.
É importante notar que as alterações no shell padrão geralmente entram em vigor no seu próximo login.
Os dois métodos acima modificam o shell especificado no arquivo /etc/passwd, que você pode editar manualmente como no terceiro método abaixo.
3. Alterar o Shell do Usuário no Arquivo /etc/passwd
Neste método, simplesmente abra o arquivo /etc/passwd usando qualquer um dos seus editores de texto de linha de comando favoritos e altere o shell de um usuário específico.
sudo vi /etc/passwd OR sudo nano /etc/passwd

Localize a linha correspondente ao usuário para quem deseja alterar o shell padrão. Por exemplo, se a linha se parecer com isto:
tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/bash
O último campo, /bin/bash, representa o shell padrão (neste caso, Bash).
Para alterar o valor do campo do shell para o shell desejado, simplesmente especifique o caminho para um shell (/bin/zsh) como mostrado.
tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/zsh
Quando terminar de editar, salve e feche o arquivo.
Como Instalar Outro Shell?
Semelhante a outros pacotes de software, shells populares como Zsh e Fish podem ser facilmente instalados a partir do repositório de sua distribuição, como mostrado.
Instalar o Shell Zsh no Linux
Para instalar Zsh no Linux, use o comando apropriado para a sua distribuição específica do Linux.
sudo apt install zsh [On Debian, Ubuntu and Mint] sudo yum install zsh [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo emerge -a sys-apps/zsh [On Gentoo Linux] sudo apk add zsh [On Alpine Linux] sudo pacman -S zsh [On Arch Linux] sudo zypper install zsh [On OpenSUSE]
Instale o Fish Shell no Linux
Para instalar Zsh no Linux, utilize o comando apropriado para a sua distribuição específica do Linux.
sudo apt install fish [On Debian, Ubuntu and Mint] sudo yum install fish [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo emerge -a sys-apps/fish [On Gentoo Linux] sudo apk add fish [On Alpine Linux] sudo pacman -S fish [On Arch Linux] sudo zypper install fish [On OpenSUSE]
Não se esqueça de ler esses tópicos relacionados:
Neste artigo, descrevemos várias maneiras de alterar o shell de um usuário no Linux. Para compartilhar quaisquer pensamentos conosco, utilize a seção de comentários abaixo.
Source:
https://www.tecmint.com/change-a-users-default-shell-in-linux/