私はこのようなシバンラインを知っています:
#!/bin/sh
しかし、私はこのようにシバンラインを使用することもできることを知りました:
#!/usr/bin/env python3
これは私を混乱させます、誰かがLinuxがこれをどのように処理するか私に説明できますか?
新しい* nixバージョンは、コマンドwhich
が機能するのと同じ方法でこれを解決します。
環境変数$ PATHで設定されているすべてのディレクトリ(グローバル、.bashrcまたはその他のログオンスクリプト、または手動)を1つずつ検索し、最初の一致を返します。
重要なのは、一部のLinuxバージョンではエイリアスファイル(別名symlinks)が作成されることです。 debian。
また、bashコマンドのエイリアスは、最初に実行されるときにこの動作を上書きします。
本質的に好き
tail -n +1 yourfile | /usr/bin/env python
#!/bin/sh
はインタプリタバイナリのパスにすぎませんが、
#!/usr/bin/env python3
python3
インタープリターへのオプションの引数として#!/usr/bin/env
を渡すインタープリターのパスがあります
詳しくは wiki を参照してください。