スクリプトを実行するインタプリタを動的に選択する方法はありますか? 2つの異なるシステムで実行されるスクリプトがあり、使用するインタプリタは2つのシステムの異なる場所にあります。結局私がすべきことは、切り替えるたびにハッシュバンラインを変更することでした。私がしたいことはロジックこれと同じです(このような正確な構成が不可能であることを知っています):
if running on system A:
#!/path/to/python/on/systemA
elif running on system B:
#!/path/on/systemB
#Rest of script goes here
あるいは、最初のインタプリタを使用しようとし、見つからない場合は、2番目のインタプリタを使用することをお勧めします。
try:
#!/path/to/python/on/systemA
except:
#!path/on/systemB
#Rest of script goes here
どうやら私はどこにいるかに応じてそれを行うことができますが、実際に/path/to/python/on/systemA myscript.py
実行
/path/on/systemB myscript.py
されるラッパースクリプトがあるので、myscript.py
手動ではなくプログラム的にPythonインタプリタへのパスを指定したいと思います。
ベストアンサー1
実際のプログラムの正しいインタプリタを見つけるために、いつでもラッパースクリプトを作成できます。
#!/bin/bash
if something ; then
interpreter=this
script=/some/path/to/program.real
flags=()
else
interpreter=that
script=/other/path/to/program.real
flags=(-x -y)
fi
exec "$interpreter" "${flags[@]}" "$script" "$@"
ユーザーのPATH
asにラッパーを保持しprogram
、実際のプログラムを別々に置くか、別の名前を使用してください。
#!/bin/bash
配列のためハッシュバンで使用しますflags
。可変個数のフラグなどを格納する必要がなく、それなしでもできる場合スクリプトは#!/bin/sh
。