
シェバンで使用するターゲットを作成したいと思いますpython3
。例: 最初の行を使用します#!/usr/bin/env python3
。
私が試したこと:
setenv python3 PATH_TO_BINARYも入れて
.cshrc
、echo $python3もパスを表示します/bin/env NAME=python3 PATH_TO_BINARY は python3 を開きますが、shebang の使用は許可しません。/bin/env python3=PATH_TO_BINARY も同様です。
重要であれば、次の問題を解決したいと思います。
私はrhel 6
直接インストールできないシステムで作業していますが、アクセス可能なネットワーク リソースにインストールされているpython3
システムを使用することはできますanaconda3
。絶対パスでシェバンを配置する代わりに、python3 パスを適切に設定して、移植可能なコードを記述したいと思います。
答え1
この場合、#!
変更する必要があるのは - 行ではなく、 です$PATH
。
#!/usr/bin/env python3
python3
これにより、変数にリストされているディレクトリ内でインタープリターが検索されるようになります$PATH
。
python3
が例えば にインストールされている場合$HOME/local/bin
、このディレクトリは$PATH
前にインタープリターが含まれている可能性のある他のディレクトリpython3
。含まれていない場合は、 で独自のインタープリターの代わりにそのインタープリターが使用されます$HOME/local/bin
。
だから設定する必要がある
PATH="$HOME/local/bin:$PATH"
コマンドラインまたはシェル初期化スクリプト (~/.bashrc
例) のいずれかで実行します。C シェル ユーザーは別の方法で実行します...
set path = ($HOME/local/bin $path)
一般的に、#!
-行は通訳者スクリプトの場合、つまり、ファイルを解析して実行するために使用するプログラムを指定します。sed
たとえば、スクリプトでは を使用します#!/usr/bin/sed -f
。