如何设置一个在 shebang 中被尊重的命令别名

如何设置一个在 shebang 中被尊重的命令别名

我在 Linux 服务器上运行多个版本的 PHP。我在 bashrc 中添加了一个别名,以将php命令指向特定版本alias php='/usr/bin/php7.3'

当我使用 php 命令执行 PHP 脚本时,一切如预期般顺利。例如php myscript.php

但是,如果我制作myscript.php一个可执行文件并将 shebang 放在#!/usr/bin/env php顶部,它会使用 PHP 的默认版本执行脚本,并且不会使用我的 bashrc 中定义的别名。

我知道我可以将shebang更改为#!/usr/bin/env /usr/bin/php7.3,但我需要全局更改,而不是逐个文件更改。

php是否可以为shebang 中尊重的命令设置别名?

答案1

是否可以为 shebang 中尊重的 php 命令设置别名?

不是,因为 shebang 是由内核解析的,它不知道也不关心你 shell 特定的别名和环境,例如 $PATH(这就是为什么你必须在 shebang 中提供完整路径的原因)。你可以做的是创建php一个指向特定 php 版本的符号链接,并将包含它的目录添加到你的 PATH 前面,以便它被选中env

相关内容