O mais provável é que a partição do windows esteja montada com o sinalizador noexec
ativado. Você pode confirmar na saída de:
mount
Na saída, você provavelmente verá algo como (rw,noexec)
no final da linha. O noexec
flag não é um padrão, então isso geralmente acontece quando é configurado explicitamente para montá-lo dessa maneira.
Quando você executa o script com bash /path/to/script.sh
, ele funciona
porque nesse caso você não está executando o script,
mas você está executando bash
, que interpreta o script dado em seu argumento.
Como nota adicional:
but interestingly calling it with sh works.
Como o script tem o shebang #!/bin/bash
, você deve usar bash
em vez de sh
para executá-lo. O autor do script provavelmente usou este shebang por uma razão, e algumas implementações de sh
(ou o que estiver vinculado em seu sistema) podem não suportar alguns recursos do Bash.
Finalmente,
para poder executar o script diretamente,
você poderia tentar montar a unidade com exec
flag em vez de noexec
,
mas primeiro pense se isso é realmente uma boa ideia ou não.
O padrão de montagem com noexec
é para um recurso de segurança,
para impedir a execução acidental de arquivos potencialmente perigosos provenientes de fontes não confiáveis. Eu não acho que você deveria mudar isso. Basta executar com bash
.