Você não sabe o que é e para que serve o shell e a interface de linha de comando ?
Neste artigo você vai aprender sobre a interface de linha de comando, será ensinada a base teórica sobre shell, abordando conhecimentos técnicos essenciais do shell bash no linux e também aprenderá sobre sessões do shell.
O foco dessa documentação é o shell bash no linux porque é o mais usado nas distribuições linux, e consequentemente por profissionais de ti.
E acredite, saber interagir com o sistema através do shell bash é fundamental para ter um maior controle sobre o linux.
O que é a interface de linha de comando (CLI) ?
É uma interface de usuário baseada em texto usada para comunicação com o sistema. A interação é feita por comandos para o sistema entender, processar e devolver o resultado para o usuário, completando assim a interação entre humano e computador.
No linux, a CLI é acessada através do console virtual, emulador de terminal ou usando o serviço SSH. Ao acessar a interface de linha de comando é apresentado um prompt, igual ou similar ao da imagem a seguir.

O Prompt indica onde os comandos começam a ser digitados, o cursor pisca esperando sua instrução (comando).
Você pode customizar o prompt alterando a variável PS1, recomendo a leitura do manual para saber mais sobre os caracteres especiais que podem ser usados no valor da variável para customiza-la.
O que é o shell do linux ?
O shell do linux é um programa que interpreta os códigos (comandos) digitados na CLI (interface de linha de comando) traduzindo para uma linguagem que o kernel do Linux consiga processar e executar, exibindo o resultado na tela.
Sem o shell a interação com o sistema dependeria exclusivamente de interfaces gráficas, que nem sempre oferecem os recursos necessários e a rapidez para tarefas complexas ou automação de processos.
Abaixo tem uma comparação entre o shell bash no linux e outros interpretadores de comandos populares no ecossistema Unix:
| Shell | Pontos Fortes | Pontos Fracos |
|---|---|---|
| bash | Usado em shell scripts de automação de sistemas e interação com usuários. | Um pouco mais lento que shells minimalistas como o dash. |
| sh | Altamente portátil e presente em quase todos os sistemas Unix. | Possui poucos recursos interativos para o usuário final. |
| zsh | Altamente customizável, oferece mais recursos interativos. | Requer configuração adicional para atingir potencial máximo. |
| fish | Amigável, com sugestões inteligentes de comandos nativas. | Não é 100% compatível com a sintaxe do padrão POSIX. |
Ao trabalhar com servidores linux, é essencial saber usar o shell para administrar o sistema, preferencialmente o shell bash que é o mais usado.
Shell Interativo e Não-interativo
O shell interativo é aquele em que há uma interação direta com o usuário, ou seja, o usuário precisa interagir digitando comandos na interface de linha de comando.

O shell interativo é iniciado ao fazer login através do console virtual ou ssh (acesso remoto) ou sem login a partir de emulador de terminal. Para interagir o sistema mostra o prompt com o cursor piscando e o shell espera a interação do usuário.
O shell não-interativo é usado sem interação direta com usuário, por exemplo, é invocado ao executar shell scripts na CLI. A imagem a seguir mostra parte do código de um shell script que inicia o firefox:

A primeira linha do script que contém “#!/bin/sh” indica o programa vai executar o código.
Na execução de scripts, cada linha de código é executada automaticamente sem precisar o usuário digitar o comando e em seguida pressionar a tecla ENTER para executar.
Comparação entre shell interativo e não-interativo:
| Característica | Shell Interativo | Shell Não-Interativo |
|---|---|---|
| Interação do usuário | Sim | Não |
| Usa Prompt | Sim | Não |
| A interação é feita | Manualmente (digitando comandos) | Comandos executados automaticamente |
| Uso típico | Console Virtual ou SSH (acesso remoto) | Scripts, Agendamento de tarefas do cron |
Qual é a diferença entre shell e terminal no linux ?
O terminal envia o que você digitou para o shell, e o shell executa o código. Sem o terminal, você não usaria o shell e sem o shell, o terminal seria apenas uma janela vazia e inútil.
Para interagir com o sistema pela linha de comando você precisa dos dois. para um melhor entendimento veja analogia a seguir.
Analogia: O terminal ou console virtual é o palco e o shell é o ator, e os comandos são o roteiro que o ator (shell) executa.
Shell Bash no Linux
O shell bash (Bourne Again Shell) é um interpretador de comandos e linguagem de script, e foi desenvolvido como substituto do shell sh (Bourne shell).
O shell bash tem várias funcionalidades avançadas, como por exemplo:
- Autocompletar usando a tecla TAB, permite completar: nomes de arquivos, comandos sem digita-los por completo.
- Expansão de chaves.
- Condicionais (if e case).
- Variáveis de ambiente para customizar a sessão.
Como o shell bash também é uma linguagem de scripts, os usuários podem criar arquivos (shell scripts) contendo comandos, e estes se tornam comandos dos próprios usuários, para executar alguma tarefa.
Todo o código que vêm após o caractere “#” (cerquilha) não é interpretado e executado pelo shell bash. Exemplo técnico:
# bash - esse código não é executadoAssim, você pode usar o caractere “#” para adicionar comentários explicando o que o código faz.
visudo # edita o arquivo de configuração do sudoPor que usar o Shell Bash ?
1. O Bash funciona em praticamente todos os sistemas operacionais do tipo Unix e no WSL.
2. Desempenho excelente, muito leve e com inicialização praticamente instantânea.
3. Automação de tarefas criando shell scripts para tarefas repetitivas.
4. Muito usado em DevOps para pipelines, implantações e infraestrutura como código.
Sessões do shell bash
Uma sessão do shell bash pode ser vista como um ambiente de execução fornecido pelo shell, para o usuário interagir executando comandos. A sessão é iniciada no momento que o bash é executado e é encerrada ao fim da execução do shell bash.
Por exemplo, para iniciar uma sessão do shell você pode: abrir o terminal emulado ou fazer acesso remoto usando o ssh ou acessar o console virtual, e após a autenticação a sessão será iniciada.

O que acontece dentro de uma sessão ? Durante a sessão, o shell bash:
– executa os comandos que o usuário digita.
– mantém variáveis de ambiente (como $PATH).
– Guarda histórico de comandos.
– O diretório HOME do usuário que se autenticou é usado.
– Carrega funções e alias.
Os processos iniciados durante a sessão serão encerrados quando a sessão for terminada, a não ser que inicie os processos com o comando nohup ou tmux.
Para encerrar uma sessão execute o comando exit:
exit # encerra a sessãoÉ executado algum código ao iniciar o bash ?
Dependendo de como o shell bash é iniciado ele executa uma sequência de scripts.
Quando o bash no linux é iniciado como um shell de login interativo, que é um shell interativo iniciado após o login, o código dos seguintes arquivos são executados, respectivamente, na ordem: /etc/profile, /etc/profile.d/*, ~/.bash_profile, ~/.bash_login e ~/.profile.
| Arquivo | Descrição |
|---|---|
| /etc/profile | O código deste arquivo é executado pelo shell bash após autenticação de qualquer usuário. |
| /etc/profile.d | Esse é um diretório, contém arquivos com comandos executados pelo shell bash após autenticação de qualquer usuário. |
| ~/.bash_profile ou ~/.bash_login ou ~/.profile | O shell bash tenta ler e executar os arquivos “~/.bash_profile, ~/.bash_login ou ~/.profile, nessa ordem, executando apenas o primeiro que existir. Esses arquivos são lidos do HOME do usuário da sessão atual (ou seja, do usuário que fez o login). Esses arquivos também podem ser lidos e ter seu código executado após execução do bash como shell não-interativo com a opção --login. |
O caractere “~” (tio) indica o diretório HOME da conta de usuário corrente.
Mas, se o bash for iniciado como um shell interativo sem login (EX: a partir do Gnome Terminal) o código dos seguintes arquivos são executados:
| Arquivo | Descrição |
|---|---|
| /etc/bashrc ou /etc/bash.bashrc | O código destes arquivos é executado pelo shell bash para todas as contas de usuário que iniciarem o shell bash sem login, como por exemplo ao abrir um emulador de terminal. |
| ~/.bashrc | O código deste arquivo é executado pelo shell bash somente pelo usuário corrente que iniciar o shell bash sem login. |
Se o bash foi iniciado como um shell de login interativo, no momento em que for encerrado, o bash lê e executa os comandos do arquivo “~/.bash_logout”, se existir.
Busca e execução de comandos
Na interface de linha de comando, sempre que você digita algo que não inicia com “#” (cerquilha) ou sem usar a “/” (barra) e pressiona a tecla ENTER, o shell bash no linux tentará localizar o comando, assim:
1. Aliases: Busca um alias com o mesmo nome para expandir (ex: ll para ls -la), se existir expande o alias.
2. Palavras-reservadas: Se não for um alias, verifica se é uma palavra reservada, como if, for, case ou while, se for executa o código.
3. Funções : Não é alias ou palavra reservada, tenta encontrar uma função com o mesmo nome que digitou, caso tenha executa a função.
4. Comandos Internos (Built-ins): Não é um alias ou palavras reservadas ou função, então o bash, tenta localizar um comando interno do bash (ex: cd, exit, pwd) com o mesmo nome, se encontrar executa.
5. Comandos Externos: Se não for nenhuma das alternativas anteriores, O shell bash busca comandos nas pastas listadas na variável $PATH, por exemplo: git, python3, vim.
Execute o comando type seguido do comando que precisa saber se é interno ou externo. Exemplo prático:
type cd # cd é um comando interno (builtin)
type python3 # python3 é um comando externo
O type é somente um dos milhares de comandos, para aprender mais sobre comandos linux recomendo a leitura desse guia completo para iniciantes.

Comandos Linux: Guia completo para iniciantes
Conclusão
Entender o funcionamento do shell bash no linux é o primeiro passo para um profissional de TI que trabalha com sistemas linux.
Vimos desde a diferença crucial entre terminal e shell, até a ordem que o bash aplica para buscar e executar comandos. Esses conhecimentos são a base para qualquer carreira em DevOps, Segurança ou administração de servidores linux.
Gostou de aprender sobre o shell bash no linux ? Deixe seu comentário com dúvidas, sugestões ou elogios abaixo. Sua participação é muito importante para continuarmos trazendo conteúdos técnicos de qualidade!

