.bashrc 中的路径相关命令

.bashrc 中的路径相关命令

我正在寻找一种方法来简化不同的 php 版本以及 Composer 的路径。我找到了一种方法这个答案这看起来很适合我。

我尝试实现以下内容以供理解

function composer ()
{
    if [ "$PWD" == "/home/vhosts/domainName/httpdocs" ]; then
       /usr/bin/php7.3 lib/composer
    elif [ "$PWD" == "/home/vhosts/domainName2/httpdocs" ]; then
        /usr/bin/php5.6 composer.phar
    else
       composer
    fi;
}

这工作正常,但我现在正在寻找一种传输标准输入的方法,以便可以进行“作曲家安装”。我希望这个问题是可以理解的

答案1

将函数的参数传递给您从函数调用的程序:

composer () {
    if [ "$PWD" = "/home/vhosts/domainName/httpdocs" ]; then
       /usr/bin/php7.3 lib/composer "$@"
    elif [ "$PWD" = "/home/vhosts/domainName2/httpdocs" ]; then
        /usr/bin/php5.6 composer.phar "$@"
    else
       command composer "$@"
    fi
}

"$@"扩展为函数的参数,单独引用(双引号是必需的)。

另请注意,当调用 just 时composer,您必须使用command composer否则递归调用该函数的方式。

我还修复了一些小的语法问题以使该函数可移植。

有了这个功能,做

composer install

/home/vhosts/domainName/httpdocs导致

/usr/bin/php7.3 lib/composer install

该函数的另一种变体:

composer () {
    case $PWD in
        "/home/vhosts/domainName/httpdocs")
            /usr/bin/php7.3 lib/composer "$@"
            ;;
        "/home/vhosts/domainName2/httpdocs")
            /usr/bin/php5.6 composer.phar "$@"
            ;;
        *)
            command composer "$@"
    esac
}

相关内容