.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;
}

これはうまくいきますが、今では「作成者のインストール」を実行できるようにstdinをパイプする方法を探しています。この質問が理解できることを願っています。

答え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
}

関数に拡張されるパラメータは"$@"個別に引用されます(二重引用符が必要です)。

また、呼び出すときは関数の再帰呼び出しを使用する必要があり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
}

関連情報