.sh ファイルは、sh を明示的に呼び出さないと実行できません。

.sh ファイルは、sh を明示的に呼び出さないと実行できません。

以下を含むファイルがあるとしますrun.sh

#! /bin/sh -x

x-www-browser index.html

そしてls -l run.sh言った:

-rwxr-xr-x 1 myusername myusername 39 Jan  9 19:32 run.sh

そして./run.sh言った:

bash: ./run.sh: Permission denied

なぜ動作しないのですか?なぜsh -x run.sh完璧に動作しますか?


より多くの情報、なぜなら明らかに容易ではないからです

を実行するとsudoエラーは出力されませんが、何もしません。

myusername@crunchbang:/mnt/data$ sudo ./run.sh
[sudo] password for myusername: 
myusername@crunchbang:/mnt/data$ 

答え1

ファイルシステムがrun.sh開いてマウントされていますnoexec

答え2

私の考えでは、その行#!に奇妙な文字があるようです。 ASCIINulやその他の印刷できない文字、バックスペースキーなどがあります。一部のシェルでは、MS-DOS/Windows 2 バイト (キャリッジ リターンと改行) 行末の表示に問題があります。最新の編集者はファイルを調べて、Unixスタイル(改行)行の終わりがあるのか​​、Windowsスタイル(Macスタイルでも)テキストファイルがあるかどうかを確認できます。おそらく、編集者が混乱してWindowsのテキストファイルを作成した可能性があります。

これにより、カーネルは指定された「実行ファイル」を見つけることができず、存在しない「実行ファイル」を実行できないと主張します。

関連情報