.sh não pode ser executado sem chamar explicitamente sh

3

Digamos que eu tenha um arquivo chamado run.sh que contém:

#! /bin/sh -x

x-www-browser index.html

E ls -l run.sh diz:

-rwxr-xr-x 1 myusername myusername 39 Jan  9 19:32 run.sh

E ./run.sh diz:

bash: ./run.sh: Permission denied

Por que isso não funciona? Por que sh -x run.sh funciona perfeitamente?

Mais informações, já que não é tão fácil, aparentemente

Se eu fizer um sudo , ele não emitirá um erro, mas também não fará nada.

myusername@crunchbang:/mnt/data$ sudo ./run.sh
[sudo] password for myusername: 
myusername@crunchbang:/mnt/data$ 
    
por fury 10.01.2012 / 01:43

2 respostas

13

O sistema de arquivos run.sh está ativado foi montado noexec .

    
por 10.01.2012 / 01:50
1

Meu palpite é que a linha #! tem algum caractere estranho, talvez um ASCII Nul ou outro caractere não imprimível, um backspace - algo, talvez. Alguns shells tiveram um problema com os marcadores de fim de linha de dois bytes do MS-DOS / Windows (carriage-return linefeed). Os editores modernos podem examinar arquivos e decidir se são arquivos de texto estilo Unix (alimentação de linha) ou estilo Windows (e talvez até estilo Mac). Talvez você tenha misturado seu editor e escrito um arquivo de texto do Windows.

Isso faz com que o kernel não encontre o "executável" que é tão especificado, e afirma que ele não pode executar o "executável" inexistente.

    
por 10.01.2012 / 01:56