运行脚本时如何强制使用特定的二进制文件

Nic*_*ink 3 bash path command

如何在执行 bash 脚本时强制使用特定的二进制文件?

我有一个使用“php”二进制文件的 bash 脚本。

我的电脑上有几个 php 版本。通过 PATH 变量配置的主要 php 二进制文件不是在这种情况下使用的二进制文件。

通常脚本会像这样执行:

./script.sh
Run Code Online (Sandbox Code Playgroud)

我需要这样的东西:

php=/usr/bin/php ./script.sh
Run Code Online (Sandbox Code Playgroud)

注意:不能仅为此命令临时更改 PATH 变量,因为这会影响其他依赖项。

在脚本中对其进行硬编码也不是一种选择,因为该脚本被多人使用。因此,当其他人执行脚本时,它应该只使用 PATH 变量中指定的主要 php 二进制文件。

我不希望它可以通过变量访问。我实际上想指定查找二进制文件的确切位置。就像通常使用 PATH 所做的那样,现在只针对一个具有绝对路径的二进制文件。如果此脚本调用另一个脚本,则第二个脚本也需要使用该 php 版本。——

小智 5

这会起作用:

php() {  /path/to/your/php $@; }; export -f php; ./script.sh ; unset -f php
Run Code Online (Sandbox Code Playgroud)

分解:

php() {  /path/to/your/php $@; }; 
Run Code Online (Sandbox Code Playgroud)

定义一个 shell 函数,它将所有参数传递给您提供的 php 路径。

export -f php
Run Code Online (Sandbox Code Playgroud)

导出新创建的函数以在脚本中使用

./script.sh
Run Code Online (Sandbox Code Playgroud)

执行你的脚本

unset -f php
Run Code Online (Sandbox Code Playgroud)

删除我们之前定义的 shell 函数。