スクリプトを実行するときに特定のバイナリを強制的に使用する方法

スクリプトを実行するときに特定のバイナリを強制的に使用する方法

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

前に定義したシェル関数を削除します。

おすすめ記事