Bash

執行腳本時如何強制使用特定的二進製文件

  • October 19, 2013

如何在執行 bash 腳本時強制使用特定的二進製文件?

我有一個使用“php”二進製文件的 bash 腳本。

我的電腦上有幾個 php 版本。通過 PATH 變數配置的主 php 二進製文件不是在這種情況下使用的那個。

通常腳本會像這樣執行:

./script.sh

我需要這樣的東西:

php=/usr/bin/php ./script.sh

注意:臨時更改此命令的 PATH 變數不是一個選項,因為這會影響其他依賴項。

在腳本中硬編碼也不是一種選擇,因為該腳本被多人使用。因此,當其他人執行腳本時,它應該只使用 PATH 變數中指定的主 php 二進製文件。

我不希望它可以通過變數訪問。我實際上想指定查找二進製文件的確切位置。就像它通常使用 PATH 所做的那樣,只是現在只有一個具有絕對路徑的二進製文件。如果此腳本呼叫另一個腳本,則第二個腳本也需要使用該 php 版本。–

這會起作用:

php() {  /path/to/your/php $@; }; export -f php; ./script.sh ; unset -f php

分解它:

php() {  /path/to/your/php $@; }; 

定義一個將其所有參數傳遞給您提供的 php 路徑的 shell 函式。

export -f php

導出新創建的函式以在腳本中使用

./script.sh

執行你的腳本

unset -f php

刪除我們之前定義的 shell 函式。

一種方法是在腳本中添加一個額外的變數:

PHP=$1
if [ -z $PHP ]; then
   PHP=php
fi

然後,如果您在不指定任何內容的情況下執行它,它將使用預設的 PHP 二進製文件。否則,它將使用您將通過變數的那個

./script.sh /usr/bin/php

引用自:https://unix.stackexchange.com/questions/96623