Questão Como restaurar a associação “.sh” no bash?


Por alguma razão desconhecida eu tenho um Debian 7 VM onde arquivos .sh que não possuem uma linha shebang (#! / Bin / sh) não são mais associados / executados por bash, ie. sob bash, com "test.sh" um script de shell executável (chmod'ed + x)

./test.sh

não fará nada, no entanto

sh test.sh

irá executar o script com o bash.

Quando a linha shebang está presente, o script é executado.

Agora, exatamente o mesmo arquivo de script, com os mesmos direitos de acesso, em outras (virtualmente similares) Debian 7 VMs, será executado com "./test.sh" mesmo quando o shebang não estiver presente.

Alguma ideia sobre o que poderia causar a diferença?

editar: após o último lote de atualização (apt-get upgrade em 2014-08-25) e reinicie o problema se foi, anteriormente eu tentei reiniciar, e não resolveu o problema. Então eu acho que algo foi corrigido no Debian, embora eu não tenha ideia do que está procurando nos pacotes atualizados. Se alguém puder esclarecer o que foi consertado, atribuirei a recompensa.


1


origem


Perguntas: (1) Qual shell você está executando, (2) Qual é o primeiro caractere deste script, (3) O script tem permissão de execução? - harrymc
(1) bash (Debian 7 padrão, inalterado), (2) a, (3) sim, "-rwxr-xr-x", ainda tentou chmod 777. Isso definiu o problema parece ter ido embora com o último lote de " apt-get upgrade "(embora nenhum aparentemente relacionado ao bash). - Eric
O arquivo contém algum caractere de 8 bits? Há sim um relato de bug sobre bash incorretamente decidir que um arquivo não pode ser um script pelo seu conteúdo. - harrymc
Apenas o intervalo ASCII, minúsculo, espaço, um caractere "-" e um caractere "#" são tão exóticos quanto possíveis. O mais simples era apenas duas linhas com apt-get update e apt-get upgrade respectivamente - Eric


Respostas:


binfmt_misc não é carregado nessa VM onde está nos outros.

No debian, instale-o via binfmt-support pacote.


0



Apenas verificado, está instalado em nenhuma das VMs. - Eric