![#!/usr/bin/env foo #!vs /usr/bin/foo [重複]](https://linux33.com/image/121998/%23!%2Fusr%2Fbin%2Fenv%20foo%20%23!vs%20%2Fusr%2Fbin%2Ffoo%20%5B%E9%87%8D%E8%A4%87%5D.png)
上記の形式のうち、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