别名在脚本中不起作用 #!/usr/bin/env php

wit*_*rin 8 php bash env

我有一些 PHP 脚本,它们以#!/usr/bin/env php. 默认解释器是 PHP 4.4,但脚本需要 PHP 5.3,所以我在 中创建了一个别名~/.bashrc

alias php="/usr/local/bin/php5-53LATEST-CLI"
Run Code Online (Sandbox Code Playgroud)

因此调用php -v显示我 5.3 但#!/usr/bin/env php仍然使用 4.4。我不会更改脚本。那么我怎样才能获得 PHP 5.3#!/usr/bin/env php呢?

Gor*_*son 13

/usr/bin/env php寻找php在当前命名的可执行文件$PATH;它不关心别名、shell 函数等。如果你想让它执行 php v5.3,你必须把那个版本放在 name 下的一个目录中php,并将该目录PATH放在包含 4.4 版本的目录之前的某个位置. 也许是这样的:

mkdir /usr/local/bin/php-overrides
ln -s /usr/local/bin/php5-53LATEST-CLI /usr/local/bin/php-overrides/php
Run Code Online (Sandbox Code Playgroud)

...然后加

PATH="/usr/local/bin/php-overrides:$PATH"
Run Code Online (Sandbox Code Playgroud)

到您的~/.bash_profile(或其他适当的启动脚本)。