“comando não encontrado” ao executar um script de shell. O que eu quebrei?

8

Estou no OSX Snow Leopard.

Este é o conteúdo completo de grr.sh :

#!/bin/sh

echo wow

Quando tento executá-lo no terminal:

$ grr.sh
-bash: grr.sh: command not found
$ /bin/sh grr.sh
wow
$ sh grr.sh
wow
$ bash grr.sh
wow

Ok. Justo. Vou dar permissão executável e, em seguida, tente novamente:

$ chmod +x grr.sh
$ grr.sh
-bash: grr.sh: command not found
$ chmod 755 grr.sh
$ grr.sh
-bash: grr.sh: command not found

Hmmm. Talvez funcione se eu usar bash explicitamente? Eu vou mudar o conteúdo do arquivo para:

#!/bin/bash

echo wow

E obtenho exatamente os mesmos resultados. O que eu poderia ter quebrado?!

Uma última coisa! Caso você esteja curioso ...

$ which sh
/bin/sh
    
por Closure Cowboy 01.06.2011 / 06:43

4 respostas

19

Absolutamente nada. Somente executáveis em um dos diretórios em $PATH podem ser executados diretamente e . é (geralmente) nunca em $PATH . Especifique o caminho para o executável, por exemplo, ./grr.sh .

    
por 01.06.2011 / 06:49
7

É a localização de grr.sh na variável $PATH ? Caso contrário, você precisará inserir:

./grr.sh

se você estiver na mesma pasta que grr.sh. Se não, forneça o caminho completo para ele.

    
por 01.06.2011 / 06:49
4

as permissões para o arquivo estão erradas. Experimente os seguintes comandos:

  $ chmod 777 file.sh
  $ ./file.sh
    
por 20.06.2016 / 21:57
0

Sim, e o que ./grr.sh significa, é que neste diretório, execute o comando grr.sh. O solteiro . significa no diretório de trabalho. Caso contrário, seu shell assumirá que você está tentando executar um comando em seu $ PATH.

    
por 01.06.2011 / 06:52