web-dev-qa-db-ja.com

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

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
8
Closure Cowboy

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

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

./grr.sh

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

7
Cam Jackson

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

  $ chmod 777 file.sh
  $ ./file.sh
6
Ricardo Parro

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

0
Nathan