hello_world.c
単純なファイルがあります。ここ。私はそれを行う方法を見つけました。
gcc -Wall -g hello_world.c -o hello
動作していますが、実行するとbash hello
エラーが発生します。hello: hello: cannot execute binary file
sh hello
その後、エラー:hello: 1: Syntax error: "(" unexpected
./hello
予想される行が印刷されました。
3人は全く同じだと思いましたが、結果からではありません。なぜ他の2つは動作しないのですか?これに加えて、./hello
このファイルを呼び出す他の方法はありますかhello
?
ベストアンサー1
最初の2回の試みbash hello
では、ファイルがシェル実行可能ファイルであることをこれらのシェル(およびsh hello
それぞれ)に確実にしようとします。バイナリファイルなので、シェルはファイルを実行するように指示され、何をすべきかわからないため、これらのエラーメッセージが表示されます。 3番目の例では、シェルが実行を期待するようにバイナリをバイナリとして実行します。これは、単に現在のディレクトリ()でバイナリを見つけることができる場所を示す表示にすぎません。なぜ必要ですか?ほとんどの場合、「現在の作業ディレクトリ」は変数の一部ではないため、単に実行しても実行可能ファイルをどこにも見つけることはできません。bash
sh
hello
hello
./
.
./
$PATH
hello