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.shbackup.shola_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
-
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. -
Teste com
bash -x— Para depurar scripts, executebash -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 -
Mantenha scripts em um diretório dedicado — Crie uma pasta como
~/scripts/e adicione-a ao seuPATHeditando o arquivo~/.bashrc:
text export PATH="$HOME/scripts:$PATH"
Isso permite executar seus scripts de qualquer lugar sem precisar do./. -
Comente seu código — Use
#para adicionar comentários explicativos. Isso ajuda você e outros a entenderem o script no futuro. -
Valide o script com
shellcheck— Esta ferramenta analisa scripts Bash e aponta erros comuns, más práticas e problemas de portabilidade. Instale comsudo apt install shellchecke use:
text shellcheck script.sh -
Use nomes descritivos — Um script chamado
faz_tudo.shnão é útil. Prefira nomes comobackup_diario.shouinstalar_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
- Bash Scripting Tutorial - LinuxConfig.org — Guia completo para iniciantes em Bash, incluindo shebang e permissões
- Shebang (Unix) - Wikipedia — Explicação detalhada sobre o funcionamento do shebang em sistemas Unix-like
- chmod command - Linux man page — Documentação oficial do comando chmod, com todas as opções de permissão
- Bash Guide for Beginners - The Linux Documentation Project — Tutorial introdutório completo sobre scripts Bash, incluindo execução e depuração
- ShellCheck - Find bugs in your shell scripts — Ferramenta online e CLI para análise estática de scripts shell, essencial para evitar erros comuns
- PATH variable in Linux - GeeksforGeeks — Explicação sobre a variável PATH e como adicionar diretórios personalizados