Nesta aula, vamos entender os conceitos fundamentais do ambiente de linha de comando no Linux: terminal, shell, emuladores, prompt e sessões. Esses termos são frequentemente usados de forma intercambiável, mas possuem significados distintos que são importantes para o aprendizado de shell script.

O que é um terminal vs shell

Originalmente, um terminal era um dispositivo físico (um monitor e teclado) conectado a um computador central (mainframe). Hoje, usamos emuladores de terminal (programas que simulam esse hardware). O shell é o programa que interpreta os comandos digitados no terminal. O shell é o ambiente onde você executa comandos e scripts. Exemplos de shell: Bash, Zsh, Fish. O Bash é o shell padrão na maioria das distribuições Linux.

# Verifique qual shell está em uso
echo $SHELL
# Liste shells disponíveis no sistema
cat /etc/shells

Emuladores

Emuladores de terminal são programas que fornecem uma interface gráfica para interagir com o shell. Exemplos populares: GNOME Terminal, Konsole, Terminator, xterm, iTerm2 (macOS), Windows Terminal (WSL). Eles oferecem recursos como abas, fontes customizáveis, cores e suporte a múltiplas sessões.

# Abrir um novo terminal (exemplo no GNOME)
gnome-terminal
# Abrir com um comando específico
gnome-terminal -- bash -c "ls; exec bash"

Prompt

O prompt é a sequência de caracteres exibida pelo shell indicando que está pronto para receber comandos. Normalmente termina com $ para usuários comuns e # para root. O prompt pode ser customizado através da variável PS1. Exemplo de prompt padrão: usuario@maquina:~$.

# Exibir o prompt atual
echo $PS1
# Customizar o prompt (exemplo simples)
PS1='\u@\h:\w\$ '

Sessões

Uma sessão é uma instância do shell em execução. Quando você abre um terminal, inicia uma sessão. Sessões podem ser aninhadas (ex: dentro de um script) ou gerenciadas com ferramentas como screen e tmux, que permitem manter sessões ativas mesmo após desconectar. Cada sessão tem seu próprio histórico, variáveis e processos.

# Iniciar uma nova sessão com bash
bash
# Sair da sessão atual
exit
# Usar tmux (se instalado)
tmux new -s minha_sessao
# Desanexar: Ctrl+b d
# Reanexar: tmux attach -t minha_sessao

Referências

Exercícios

  1. Explique a diferença entre terminal e shell.

    Terminal é o dispositivo ou programa que fornece a interface para entrada e saída de texto. Shell é o programa que interpreta os comandos e interage com o sistema operacional. O terminal executa o shell, mas são entidades separadas.
  2. Qual comando exibe o shell atualmente em uso?

    echo $SHELL
  3. Cite dois emuladores de terminal comuns no Linux.

    GNOME Terminal e Konsole (ou xterm, Terminator, etc.).
  4. O que significa o símbolo $ no prompt? E o #?

    $ indica que o usuário é comum; # indica que o usuário é root (superusuário).
  5. Qual comando você usaria para manter uma sessão ativa mesmo após desconectar?

    Usar o comando tmux ou screen. Exemplo: tmux new -s minha_sessao.