Seu primeiro script: shebang, chmod +x e execução

1. O que é um script Bash?

Um script Bash é essencialmente um arquivo de texto que contém uma sequência de comandos que seriam normalmente digitados manualmente no terminal. Em vez de executar cada comando individualmente, você os agrupa em um único arquivo e executa tudo de uma vez. Isso permite automatizar tarefas repetitivas, criar ferramentas personalizadas e gerenciar sistemas de forma mais eficiente.

A diferença fundamental entre digitar comandos no terminal e usar um script é a reutilização. Um script pode ser executado quantas vezes forem necessárias, em diferentes momentos e por diferentes usuários, sem exigir que você redigite os comandos.

Vamos começar com o exemplo mais simples possível — um script que exibe "Olá, mundo!":

echo "Olá, mundo!"

Este é o conteúdo básico do nosso primeiro script. Ainda não é executável, mas já contém um comando válido do Bash.

2. O shebang (#!) — a primeira linha mágica

O shebang (também chamado de hashbang) é a primeira linha de um script e começa com os caracteres #!. Ele informa ao sistema operacional qual interpretador deve ser usado para executar o script. Sem o shebang, o sistema pode tentar interpretar o script com o shell padrão do usuário, o que pode causar erros ou comportamentos inesperados.

A sintaxe mais comum e recomendada para scripts Bash é:

#!/bin/bash

Esta linha indica que o script deve ser executado pelo interpretador Bash localizado em /bin/bash, que é o caminho padrão na maioria das distribuições Linux.

Uma alternativa moderna e mais portável é:

#!/usr/bin/env bash

Esta versão usa o comando env para localizar o Bash no PATH do sistema. Ela é útil em sistemas onde o Bash pode estar instalado em um local diferente do padrão, como em ambientes macOS ou distribuições Linux não convencionais.

Se você esquecer de incluir o shebang, o sistema tentará executar o script com o shell padrão (geralmente /bin/sh). Isso pode funcionar para scripts simples, mas causará falhas se você usar recursos específicos do Bash, como arrays, substituição de processos ou expansões avançadas.

3. Criando o arquivo de script

Para criar seu primeiro script, escolha um nome significativo. Embora a extensão .sh seja opcional, ela é amplamente recomendada por convenção e ajuda a identificar rapidamente arquivos de script. Exemplos de nomes válidos:

  • meu_script.sh
  • backup.sh
  • ola_mundo.sh

Você pode usar qualquer editor de texto para criar o arquivo. Para iniciantes, recomendo:

  • nano: Simples e intuitivo, presente em praticamente todas as distribuições Linux
  • vim: Poderoso, mas com curva de aprendizado maior
  • VS Code: Editor gráfico com realce de sintaxe e integração com terminal

Vamos criar nosso primeiro script completo. Abra um terminal e digite:

nano ola_mundo.sh

Dentro do editor, escreva:

#!/bin/bash
echo "Olá, mundo!"

Salve o arquivo (no nano: Ctrl+O, Enter, Ctrl+X).

4. Permissão de execução com chmod +x

No Linux, cada arquivo possui permissões que determinam quem pode ler, escrever e executar o arquivo. Por padrão, um novo arquivo de texto não tem permissão de execução. Para transformá-lo em um script executável, usamos o comando chmod.

O comando chmod +x adiciona a permissão de execução para todos os usuários (dono, grupo e outros). Execute:

chmod +x ola_mundo.sh

Para verificar as permissões resultantes, use ls -l:

ls -l ola_mundo.sh

A saída será algo como:

-rwxr-xr-x 1 usuario usuario 30 jan 15 10:00 ola_mundo.sh

Note o x nas permissões: -rwxr-xr-x. O primeiro x (após rw-) indica que o dono pode executar; o segundo e terceiro x indicam que grupo e outros também podem executar.

Se você omitir esta etapa e tentar executar o script diretamente, receberá o erro "Permission denied".

5. Executando o script

Após criar o script e definir as permissões, você pode executá-lo de diferentes maneiras:

Caminho relativo com ./:

./ola_mundo.sh

O prefixo ./ é obrigatório porque o diretório atual (./) geralmente não está incluído no PATH do sistema. O PATH é uma variável de ambiente que lista diretórios onde o sistema procura por executáveis. Se você digitar apenas ola_mundo.sh, o sistema procurará nos diretórios do PATH e não encontrará o arquivo, resultando em "command not found".

Caminho absoluto:

/home/usuario/ola_mundo.sh

Usando o interpretador Bash explicitamente:

bash ola_mundo.sh

Esta forma não requer permissão de execução (chmod +x), pois você está invocando o Bash diretamente e passando o script como argumento. É útil para testar scripts rapidamente sem alterar permissões.

6. Erros comuns e como resolvê-los

"Permission denied" — Ocorre quando você tenta executar o script sem permissão de execução. Solução: execute chmod +x script.sh.

"command not found" — Pode ter duas causas principais:
1. Você esqueceu o ./ ao executar o script: use ./script.sh em vez de apenas script.sh
2. O shebang está incorreto ou o interpretador não está instalado: verifique a primeira linha do script

"bad interpreter: No such file or directory" — O caminho especificado no shebang não existe. Por exemplo, se você escreveu #!/bin/bash mas o Bash está em /usr/bin/bash. Solução: use #!/usr/bin/env bash para maior portabilidade ou verifique o local exato do Bash com which bash.

Erro de sintaxe inesperado — Se você escreveu o script no Windows e transferiu para Linux, pode haver caracteres de retorno de carro (\r\n em vez de \n). Solução: use dos2unix script.sh ou edite o script no Linux.

7. Boas práticas para iniciantes

  1. Sempre inicie com #!/bin/bash — Isso garante que o script será executado com o Bash, mesmo que o shell padrão do usuário seja diferente.

  2. Teste com bash -x — Para depurar scripts, execute bash -x script.sh. Isso exibirá cada comando antes de executá-lo, mostrando expansões de variáveis e o fluxo de execução. Exemplo:
    text bash -x ola_mundo.sh

  3. Mantenha scripts em um diretório dedicado — Crie uma pasta como ~/scripts/ e adicione-a ao seu PATH editando o arquivo ~/.bashrc:
    text export PATH="$HOME/scripts:$PATH"
    Isso permite executar seus scripts de qualquer lugar sem precisar do ./.

  4. Comente seu código — Use # para adicionar comentários explicativos. Isso ajuda você e outros a entenderem o script no futuro.

  5. Valide o script com shellcheck — Esta ferramenta analisa scripts Bash e aponta erros comuns, más práticas e problemas de portabilidade. Instale com sudo apt install shellcheck e use:
    text shellcheck script.sh

  6. Use nomes descritivos — Um script chamado faz_tudo.sh não é útil. Prefira nomes como backup_diario.sh ou instalar_dependencias.sh.

Agora você já sabe os fundamentos para criar, preparar e executar seu primeiro script Bash. Pratique criando scripts simples e, aos poucos, explore os recursos mais avançados da linguagem.

Referências