Shebangにパスが必要なのはなぜですか?
間違った
#!ruby
正しい
#!/usr/local/bin/ruby
#!/usr/bin/env ruby
オペレーティングシステムには、登録されたコマンドのパスに関する情報が必要ですが、なぜそのコマンドがまだ提供されると期待していますか?
ベストアンサー1
おそらくカーネルをより簡単にするためのようです。カーネルが実行可能ファイルパスを検索しないと思います。これはCライブラリで処理されます。 #!
処理はカーネルで行われ、標準Cライブラリを使用しません。
また、カーネルはあなたのパスが何であるかを知らないと思います。 $PATH
環境変数であり、プロセスだけが環境を持つ。カーネルはそうではありません。実行を実行するプロセスの環境にアクセスできると仮定しますが、現在カーネルにはそのような環境変数にアクセスできるものがないと思います。