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


8

Estou no OSX Snow Leopard.

Aqui está 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. Eu darei permissão executável e 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

Hummm. Talvez funcione se eu usar o bash explicitamente? Vou mudar o conteúdo do arquivo para:

#!/bin/bash

echo wow

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

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

$ which sh
/bin/sh

Respostas:


19

Absolutamente nada. Somente executáveis ​​em um dos diretórios em $PATHpodem ser executados diretamente e, .geralmente (nunca) estão dentro $PATH. Especifique o caminho para o executável, ou seja ./grr.sh.


3
+1. Além disso, o diretório atual está no caminho nos sistemas Windows por padrão e tem maior prioridade. Essa diferença crucial é provavelmente a fonte da confusão do solicitante.
afrazier

Você foi o primeiro por 9 segundos! Obrigado!
Cowboy de fechamento

Você salvou o meu macbook
vietnguyen09

7

A localização do grr.sh está na $PATHvariável? Caso contrário, você precisará digitar:

./grr.sh

se você estiver na mesma pasta que grr.sh. Caso contrário, forneça o caminho completo para ele.


6

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

  $ chmod 777 file.sh
  $ ./file.sh

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 assume que você está tentando executar um comando no seu $ PATH.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.