15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar
02.09.2025

Como Executar um Arquivo .sh no Linux: Guia Completo para Iniciantes e Administradores de Sistema

Os scripts shell são a base da automação Linux. Quer esteja a implementar uma aplicação web, a agendar cópias de segurança ou a configurar um servidor recém-aprovisionado, os ficheiros .sh permitem-lhe agrupar sequências de comandos complexas num único executável repetível. Este guia orienta-o através de todos os métodos para executar scripts shell em Linux — desde a execução básica até processos em segundo plano e agendamento cron — com as melhores práticas que funcionam em ambientes de produção.

O que é um ficheiro .sh em Linux?

Um ficheiro .sh é um script de texto simples escrito em linguagem shell (tipicamente Bash ou POSIX sh) que o shell Linux interpreta e executa linha por linha. Os scripts shell são utilizados para:

  • Automatizar tarefas repetitivas de administração de sistemas
  • Implementar e configurar aplicações
  • Gerir utilizadores, permissões e sistemas de ficheiros
  • Agendar trabalhos de manutenção como cópias de segurança e rotação de registos
  • Inicializar novos servidores após aprovisionamento

Se está a gerir um ambiente de VPS Hosting ou um Servidor Dedicado, a programação de scripts shell é uma competência indispensável que lhe poupará horas de trabalho manual todas as semanas.

Pré-requisitos

Antes de executar qualquer ficheiro .sh, certifique-se de que tem:

  • Acesso a um terminal Linux (local ou via SSH)
  • Uma conta de utilizador com permissões apropriadas
  • O ficheiro de script já no sistema (criado localmente ou transferido via SCP/SFTP)

Método 1: Tornar o Ficheiro Executável com chmod

Por padrão, os ficheiros .sh recém-criados ou descarregados não têm permissões de execução. Antes de executar o script como um programa, deve conceder explicitamente direitos de execução utilizando o comando chmod.

chmod +x script.sh

Para verificar se as permissões foram aplicadas corretamente:

ls -l script.sh

Deverá ver um resultado semelhante a:

-rwxr-xr-x 1 user user 1024 Jun 10 14:32 script.sh

As flags x confirmam que o ficheiro é agora executável pelo proprietário, grupo e outros.

> Dica de segurança: Se deseja restringir a execução apenas ao proprietário do ficheiro, utilize chmod 700 script.sh em vez de chmod +x.

Método 2: Executar o Script Utilizando um Caminho Relativo ou Absoluto

Uma vez que o ficheiro é executável, pode executá-lo diretamente a partir do terminal.

Utilizando um Caminho Relativo (Diretório Atual)

Se o script está no seu diretório de trabalho atual, prefixe-o com ./:

./script.sh

O ./ diz ao shell para procurar no diretório atual em vez de procurar no $PATH do sistema.

Utilizando um Caminho Absoluto

Se o script está armazenado noutro local, forneça o seu caminho completo:

/home/user/scripts/script.sh

ou

/usr/local/bin/script.sh

A utilização de caminhos absolutos é especialmente importante ao executar scripts a partir de trabalhos cron ou outros contextos automatizados onde o diretório de trabalho pode ser diferente.

Método 3: Executar o Script com bash ou sh (Sem Permissão de Execução Necessária)

Pode invocar um script shell chamando explicitamente o interpretador, mesmo que o ficheiro não tenha permissões de execução. Isto é particularmente útil para testar rapidamente um script antes de o tornar permanentemente executável.

bash script.sh

ou, para scripts compatíveis com POSIX:

sh script.sh

Diferença Entre bash e sh

ComandoInterpretadorSuporta Funcionalidades Específicas do Bash
bash script.shGNU BashSim
sh script.shPOSIX sh (frequentemente dash no Ubuntu)Não

Se o seu script utiliza sintaxe específica do Bash como arrays, condicionais [[ ]] ou substituição de processos, utilize sempre bash em vez de sh.

Método 4: Executar o Script como Superutilizador (sudo)

Alguns scripts requerem privilégios de nível raiz para modificar ficheiros de sistema, gerir serviços, instalar pacotes ou alterar configurações de rede. Utilize sudo para elevar permissões:

sudo ./script.sh

ou passe o script diretamente para bash com direitos elevados:

sudo bash script.sh

Considerações Importantes de Segurança

  • Nunca execute um script como raiz sem o ler primeiro. Um script malicioso ou mal escrito com acesso sudo pode causar danos irreversíveis ao sistema.
  • Prefira executar scripts com as permissões mínimas necessárias.
  • Se um script apenas precisa de escrever num diretório específico, considere ajustar as permissões do diretório em vez de executar o script inteiro como raiz.

Método 5: Executar o Script em Segundo Plano

Por padrão, executar um script no terminal bloqueia a sua sessão até que o script seja concluído. Para tarefas de longa duração — como transferências de ficheiros grandes, migrações de bases de dados ou construções de servidores — deverá enviar o processo para o segundo plano.

Utilizando o Operador &

./script.sh &

O símbolo & coloca o processo em segundo plano e devolve imediatamente o controlo ao seu terminal. O shell imprime o PID (ID do Processo) do trabalho em segundo plano, que pode utilizar para monitorizar ou terminá-lo mais tarde.

Manter o Script em Execução Após Logout com nohup

Se desligar do SSH, os trabalhos em segundo plano lançados com & terminarão tipicamente. Utilize nohup para evitar isto:

nohup ./script.sh &

A saída é redirecionada para nohup.out por padrão. Para especificar um ficheiro de registo personalizado:

nohup ./script.sh > /var/log/myscript.log 2>&1 &

Monitorizar Trabalhos em Segundo Plano

jobs          # List background jobs in the current session
ps aux | grep script.sh   # Find the process by name
kill PID      # Terminate a specific background process

Método 6: Agendar Execução de Script com Cron

Para tarefas recorrentes — cópias de segurança noturnas, limpezas semanais, verificações de saúde horárias — o agendador cron incorporado do Linux é a solução padrão.

Abrir o Editor Crontab

crontab -e

Sintaxe Cron

* * * * * /path/to/script.sh
│ │ │ │ │
│ │ │ │ └── Day of week (0–7, Sunday = 0 or 7)
│ │ │ └──── Month (1–12)
│ │ └────── Day of month (1–31)
│ └──────── Hour (0–23)
└────────── Minute (0–59)

Exemplos Práticos de Cron

AgendamentoExpressão CronCaso de Uso Exemplo
Todos os dias às 2:00 AM0 2 * * *Cópia de segurança de base de dados noturna
Todas as segundas-feiras às 6:00 AM0 6 * * 1Rotação de registos semanal
A cada hora0 * * * *Verificação de monitorização de tempo de atividade
A cada 15 minutos*/15 * * * *Atualização de cache
No reinício do sistema@rebootIniciar um serviço ou script no arranque

Exemplo: Cópia de Segurança Diária Automatizada

0 2 * * * /home/user/scripts/backup.sh >> /var/log/backup.log 2>&1

Isto executa backup.sh todos os dias às 2:00 AM e acrescenta tanto a saída padrão como os erros a um ficheiro de registo para auditoria.

> Dica profissional: Utilize sempre caminhos absolutos nas entradas cron. O Cron é executado com um ambiente mínimo e pode não ter acesso ao mesmo $PATH que a sua shell interativa.

Método 7: Obter um Script (Executar no Contexto da Shell Atual)

Existe um método de execução adicional que vale a pena conhecer: obter um script. Ao contrário dos métodos acima, obter executa o script na sessão shell atual em vez de gerar uma subshell. Isto significa que quaisquer variáveis ou funções definidas no script persistem no seu ambiente atual.

source script.sh

ou equivalentemente:

. script.sh

Isto é comumente utilizado para carregar variáveis de ambiente, ativar ambientes virtuais ou aplicar alterações de configuração à sessão atual.

Resolução de Problemas de Erros Comuns

Mensagem de ErroCausa ProvávelSolução
Permission deniedFicheiro sem permissão de execuçãoExecute chmod +x script.sh
No such file or directoryCaminho errado ou ficheiro em faltaVerifique o caminho com ls e pwd
bad interpreter: No such file or directoryLinha shebang errada (por exemplo, terminações de linha do Windows)Execute dos2unix script.sh para corrigir terminações de linha
command not foundScript não em $PATH e sem prefixo ./Utilize ./script.sh ou caminho absoluto completo
syntax error near unexpected tokenScript escrito para bash mas executado com shUtilize bash script.sh explicitamente

Melhores Práticas para Escrever e Executar Scripts Shell

Seguir estas práticas tornará os seus scripts mais seguros, mais fáceis de manter e mais fáceis de depurar — especialmente em ambientes de servidor.

1. Sempre Comece com uma Linha Shebang

A primeira linha de cada script deve declarar o interpretador:

#!/bin/bash

ou para máxima portabilidade:

#!/usr/bin/env bash

2. Ativar Modo Rigoroso

Adicione isto perto do topo de cada script de produção:

set -euo pipefail
  • -e — Sair imediatamente se algum comando falhar
  • -u — Tratar variáveis não definidas como erros
  • -o pipefail — Capturar falhas em comandos canalizados

3. Ler o Script Antes de Executá-lo

Nunca execute um ficheiro .sh de uma fonte externa ou não confiável sem rever o seu conteúdo primeiro:

cat script.sh

ou abra-o num editor de texto. Isto é especialmente crítico ao executar com sudo.

4. Utilizar Comentários Abundantemente

#!/bin/bash
# backup.sh — Daily backup script for /var/www
# Author: sysadmin@example.com
# Last updated: 2024-06-10

# Define source and destination directories
SOURCE="/var/www"
DEST="/mnt/backup"

5. Organizar Scripts em Diretórios Dedicados

DiretórioUso Recomendado
/usr/local/bin/Scripts em todo o sistema acessíveis a todos os utilizadores
~/scripts/ ou ~/bin/Scripts de utilizador pessoal
/opt/scripts/Scripts de automação específicos da aplicação
/etc/cron.daily/Scripts para executar diariamente via cron

6. Registar Saída de Script

Sempre redirecione a saída para um ficheiro de registo para scripts executados sem supervisão:

./script.sh >> /var/log/script.log 2>&1

7. Testar Scripts num Ambiente Seguro Primeiro

Antes de implementar um script num servidor de produção, teste-o num ambiente de teste ou numa instância VPS descartável onde os erros não causarão tempo de inatividade.

Executar Scripts Shell num Servidor Linux: Considerações Práticas

Ao executar scripts num servidor Linux remoto — quer seja um ambiente partilhado ou uma máquina dedicada — alguns fatores adicionais entram em jogo:

  • Acesso SSH: A maioria da programação de scripts do lado do servidor acontece sobre SSH. Ferramentas como screen ou tmux permitem-lhe manter sessões persistentes para que scripts de longa duração sobrevivam a desconexões.
  • Permissões de utilizador: Em ambientes de alojamento partilhado, a sua capacidade de executar scripts pode ser limitada. Um VPS com cPanel oferece-lhe acesso raiz completo e controlo total sobre a execução de scripts.
  • Implementações automatizadas: Combine scripts shell com trabalhos cron para automatizar implementações, renovações de certificados (especialmente útil juntamente com Certificados SSL) e tarefas de manutenção rotineira.
15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar