Você precisa definir as permissões do script como executáveis:
chmod +x ./foo # or sudo chmod +x ./foo
./foo
Estou tendo problemas com meu novo Raspberry Pi. Toda vez que tento executar ./foo
, ele retorna -bash: ./foo: Permission denied
Mas se eu tentar executar sudo ./bar
, ele retornará sudo: ./bar: command not found
Usar sudo
com outras coisas (por exemplo: ifdown
e ifup
) funciona bem, mas qualquer script que eu baixei ou gravei, ele se recusa a executar.
Estou bastante familiarizado com o bash, mas principalmente no contexto do Mac OS X. Parece-me que isso deve estar funcionando.
Parece que foo não é executável. Você pode corrigir isso executando chmod +x foo
e, em seguida, ./foo
ou sudo ./foo
A alternativa para torná-lo executável seria passá-lo para sh
como argumento. Você pode executá-lo dessa forma digitando sh ./foo
ou sudo sh ./foo
.
Verifique o bit executável do arquivo. Por exemplo
$ ls -l might return
-rw-rw-r-- 1 hacker hacker 28 Jan 17 11:32 foo
$ chmod 775 foo
Altere conforme apropriado para o usuário que você deseja poder executar o script.
Dê uma olhada nos bits de permissão dos arquivos ./foo
e ./bar
. No primeiro caso, ./foo
provavelmente não é executável ou não é executável para o usuário root. Quando você executa sudo
, você normalmente está elevando seus privilégios para que você seja o usuário root.
Se você tiver permissões definidas assim no arquivo ./foo
, ele não será executado para o userX.
$ ls -l
-rw-rw-r-- 1 userX groupX 14 Jan 17 11:32 foo
Se eles forem assim, ele será executado para o userX.
$ chmod u+x foo
$ ls -l
-rwxrw-r-- 1 userX groupX 14 Jan 17 11:32 foo
No entanto, o root ainda não poderá executá-lo, já que o agrupamento de três permissões (rwxrw-r--) não permite que outros usuários executem ./foo
. Você pode ativar apenas esse agrupamento ou conceder permissões de execução a todos.
$ chmod o+x foo # -rwxrw-r-x # just other users
$ chmod g+x foo # -rwxrwxr-- # allows users in group groupX
$ chmod +x foo # -rwxrwxr-x # allows everyone
Observe acima que estamos ativando o bit x
para os diferentes grupos de bits (usuário, grupo, outro).
Este arquivo não existe e, portanto, tentar executar algo que não existe lhe dará a mensagem que você viu.
$ sudo ./bar
sudo: ./bar: command not found
Ou apenas um usuário comum:
$ ./bar
-bash: ./bar: No such file or directory
Tags bash debian raspbian raspberry-pi