Shell Bash no Linux: Tudo o que você precisa saber

Compartilhe:

shell com códigos executados na interface de linha de comando

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:

ShellPontos FortesPontos Fracos
bashUsado em shell scripts de automação de sistemas e interação com usuários.Um pouco mais lento que shells minimalistas como o dash.
shAltamente portátil e presente em quase todos os sistemas Unix.Possui poucos recursos interativos para o usuário final.
zshAltamente customizável, oferece mais recursos interativos.Requer configuração adicional para atingir potencial máximo.
fishAmigá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ísticaShell InterativoShell Não-Interativo
Interação do usuárioSimNão
Usa PromptSimNão
A interação é feitaManualmente (digitando comandos)Comandos executados automaticamente
Uso típicoConsole 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).

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:

Assim, você pode usar o caractere “#” para adicionar comentários explicando o que o código faz.

Por 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.

Imagem ilustra sessões do Shell Bash no linux, desde iniciar uma sessão do shell bash até encerrá-la.

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:

É 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.

ArquivoDescrição
/etc/profileO código deste arquivo é executado pelo shell bash após autenticação de qualquer usuário.
/etc/profile.dEsse é 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 ~/.profileO 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:

ArquivoDescrição
/etc/bashrc ou /etc/bash.bashrcO 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.
~/.bashrcO 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:

O type é somente um dos milhares de comandos, para aprender mais sobre comandos linux recomendo a leitura desse guia completo para iniciantes.

Estudante usando notebook para estudar comandos linux no terminal

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!

Navegue por tópicos:

Foto de Edson Oliveira
Edson Oliveira

Especialista em Linux, trabalhando com TI tem experiência no gerenciamento, solução de problemas e suporte de servidores linux em ambientes corporativos.

Professor de cursos voltados a linux, tecnologias open source e certificações LPI. Possui as certificações LPIC-1, LPIC-2 e LPIC-3 (Mixed Environment).

Navegue por tópicos:

Você também pode gostar:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Valorizamos sua privacidade

Utilizamos cookies para aprimorar sua experiência de navegação, exibir anúncios ou conteúdo personalizado e analisar nosso tráfego. Ao clicar no botão “Aceitar todos”, você concorda com nosso uso de cookies.

Para mais informações leia nossa Política de Privacidade.