Bashスクリプトを実行するときに特定のバイナリを強制する方法は?
「php」バイナリを使用するbashスクリプトがあります。
私のコンピュータにはいくつかのPHPバージョンがあります。 PATH変数で設定されたデフォルトのPHPバイナリは、この例で使用されているバイナリではありません。
通常、スクリプトは次のように実行されます。
./script.sh
次のようなものが必要です。
php=/usr/bin/php ./script.sh
注:このコマンドに対してのみPATH変数を一時的に変更することはできません。これは他の依存関係に影響を与えるからです。
スクリプトは複数の人が使用するため、スクリプトにハードコードすることもオプションではありません。したがって、他の人がスクリプトを実行するときは、PATH変数で指定されたデフォルトのPHPバイナリのみを使用する必要があります。
変数を介してアクセスできるようにしたくありません。実際にバイナリを見つける正確な場所を指定したいと思います。通常、PATHで行われているように、これは絶対パスを持つ単一のバイナリに対してのみ機能します。このスクリプトが別のスクリプトを呼び出す場合、2番目のスクリプトもそのPHPバージョンを使用する必要があります。 –
ベストアンサー1
これは働きます:
php() { /path/to/your/php $@; }; export -f php; ./script.sh ; unset -f php
それを破壊する:
php() { /path/to/your/php $@; };
指定したPHPパスにすべての引数を渡すシェル関数を定義します。
export -f php
スクリプトで使用するために新しく生成された関数のエクスポート
./script.sh
スクリプトを実行してください
unset -f php
前に定義したシェル関数を削除します。