上記の形式のうち、bash、Pythonなどのスクリプトを実行するための「より良い」形式は何ですか?なぜ私はこれができないのですか#!$(which foo)
?フルパスを指定する必要がありますかenv
?私から集めたこれ答えは、/usr/bin/env
すべての* nix-esに対してパスが不変であること/usr/bin/python3
です。そうですか?
答え1
#!$(which foo)
その行はカーネルによって解釈されます$()
。
PATH
カーネルはコマンドの環境変数を検索しません。そのため、コマンドへのフルパスを指定する必要があります。
プログラムを使用しても、別のパス(ホームディレクトリなど)に最新バージョンのPythonがインストールされている可能性があります/usr/bin/env
。PATH
/usr/bin/python3