スボンと道

スボンと道

Shebangにパスが必要なのはなぜですか?

間違った

#!ruby

正しい

#!/usr/local/bin/ruby

#!/usr/bin/env ruby

オペレーティングシステムには、登録されたコマンドのパスに関する情報が必要ですが、なぜそのコマンドがまだ提供されると期待していますか?

ベストアンサー1

おそらくカーネルをより簡単にするためのようです。カーネルが実行可能ファイルパスを検索しないと思います。これはCライブラリで処理されます。 #!処理はカーネルで行われ、標準Cライブラリを使用しません。

また、カーネルはあなたのパスが何であるかを知らないと思います。 $PATH環境変数であり、プロセスだけが環境を持つ。カーネルはそうではありません。実行を実行するプロセスの環境にアクセスできると仮定しますが、現在カーネルにはそのような環境変数にアクセスできるものがないと思います。

おすすめ記事