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

관련 정보