繁体   English   中英

查找可执行路径,无论它是别名还是命令

[英]Find executable path regardless if it is an alias or a command

我正在做一个 bash 脚本,它必须运行一个 php 文件。 通常是php file.php ,但是我运行这个脚本的服务器有很多版本的 php 每个安装(Plesk 服务器,许多项目,不同版本)

因此,对于命令行,有一些别名:

alias php7='/opt/plesk/php/7.4/bin/php'
alias php='/opt/plesk/php/8.0/bin/php'

我已经读过找到可执行文件的最佳方法是使用typecommand -v ,但在这种情况下,它不是 output 可执行文件的路径:

$ type php
php is aliased to `/opt/plesk/php/8.0/bin/php'
$ command -v php
alias php='/opt/plesk/php/8.0/bin/php'

我需要找到php可执行文件的路径,无论它是别名、实际可执行文件还是其他任何东西。 问题是,现在,如果我在我的脚本中运行php file.php我得到这个:

$ ./test
./test: line 9: php: command not found

有什么帮助吗? 谢谢!!

更新:这是我正在做的脚本的内容:

#!/usr/bin/env bash

SCRIPT_DIR="$( pwd )"
CLI_FILE="${SCRIPT_DIR}/ofw/vendor/cli/cli.php"

PHP_FILE="$( which php )"

if test -f "$CLI_FILE"; then
        php $CLI_FILE
else
        echo "ERROR: OFW CLI must be run in a OFW project folder."
fi

如果./test是 shell 脚本,请注意您的别名对它不可用。

除非你真的要求它:

shopt -s expand_aliases
source ~/.bashrc         # or whatever file defines your aliases.

php file.php             # should now work

不过更简单的方法是将php目录添加到脚本的PATH中

PATH=/opt/plesk/php/8.0/bin/php:$PATH

php file.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM