シェルスクリプトを実行すると、「コマンドが見つかりません」。何を壊したの?


8

OSX Snow Leopardを使用しています。

の完全な内容はgrr.sh次のとおりです。

#!/bin/sh

echo wow

端末から実行しようとすると:

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

はい。けっこうだ。実行権限を付与してから、再試行します。

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

うーん。多分私が明示的にbashを使用すればそれはうまくいくでしょうか?ファイルの内容を次のように変更します。

#!/bin/bash

echo wow

そして、まったく同じ結果が得られます。何が壊れたのか!?

最後に一つだけ!気になる場合は...

$ which sh
/bin/sh

回答:


19

何もない。のディレクトリの1つにある実行可能ファイルのみ$PATHが直接実行でき、.(通常)で実行することはできません$PATH。実行可能ファイルへのパスを指定します./grr.sh


3
+1。また、現在のディレクトリ、デフォルトではWindowsシステムのパス上にあり、優先順位が最も高くなっています。この決定的な違いは、おそらく質問者の混乱の原因です。
afrazier

あなたは9秒で最初でした!ありがとうございました!
閉鎖カウボーイ

私の
Macbookを

7

grr.shの場所は$PATH変数にありますか?そうでない場合は、次のように入力する必要があります。

./grr.sh

grr.shと同じフォルダにいる場合。そうでない場合は、完全なパスを指定してください。


6

ファイルの権限が間違っています。次のコマンドを試してください。

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

0

ええ、そして./grr.shの意味は、このディレクトリでコマンドgrr.shを実行することです。シングル。は作業ディレクトリ内を意味します。そうでない場合、シェルは$ PATHでコマンドを実行しようとしていると想定します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.