Marcando scripts sh como executáveis no #Git. (#chmod #dev #windows #linux)
Overview
Bem-vindo a um guia rápido e prático para todos que enfrentam desafios ao trabalhar com scripts sh entre diferentes sistemas operacionais! Neste post, vou compartilhar uma solução simples para uma problema comum: garantir que seus scripts sejam reconhecidos como executáveis, não importa onde você esteja trabalhando. Se você já se encontrou perdido entre o Windows e o Linux nesse aspecto, este artigo é para você.
Neste post mostro o comando para adicionar a propriedade +X (executável) em um script sh e como fazer para executar este comando em lote. Esta foi uma situação que apareceu quando estava utilizando o Windows para criar um repositório com scripts que seriam executados no Linux.
A vantagem deste comando é que você consegue salvar no repositório quais arquivos devem ser considerados como executáveis e quais não são. Definitivamente, esta é uma abordagem que deve ser utilizada com cautela.
Para fazer isso é simples:
- Adicione o arquivo no repositório
- Atualize a propriedade +x para ele.
Exemplo:
git add foo.sh
git update-index --chmod=+x foo.sh
Pronto. O arquivo foo.sh será sempre considerado como executável.
Definindo todos os arquivos .sh como executáveis
Ambos scripts devem ser executados no diretório raiz do repositório.
No Linux
find ./ -type f -name "*.sh" -exec git update-index --chmod=+x {} \;
No Windows (com PowerShell)
foreach ($file in Get-ChildItem -Path ./ -Filter *.sh -Recurse) {
$filePath = $file | Resolve-Path -Relative
& git update-index --chmod=+x $filePath
}
Se quiser, salve este comando em um script .ps1 e execute ele.
Espero ter ajudado.