PATH에 Drush를 추가하는 방법은 무엇입니까?

PATH에 Drush를 추가하는 방법은 무엇입니까?

Bash, MariaDB 및 PHP 8.1이 설치된 CentOS에서는 Drush를 사용합니다.
Drush는 콘텐츠 관리 시스템 Drupal의 명령줄입니다.

Drush 명령을 실행할 때마다 다음과 같이 작성합니다.

cd /home/www/example_1.com
vendor/bin/drush status
vendor/bin/drush cache:rebuild

또는

cd /home/www/example_2.com
vendor/bin/drush status
vendor/bin/drush cache:rebuild

Drush 명령이 PATH더 이상 필요하지 않게 하려면 어떻게 해야 합니까 ?vendor/bin

export PATH=$PATH:vendor/bin

이 길이 가는 길인가요?

답변1

한 가지 해결 방법(더 나은 방법이 있을 수 있음)은 $PATH쉘 프롬프트가 나타날 때마다 업데이트하는 것입니다. 이는 PROMPT_COMMAND환경 변수(in bash)를 사용하여 달성할 수 있습니다.

따라서 다음과 같은 함수를 정의할 수 있습니다.


#You can modify this function to update the path
#only when the current directory is under '/home/www/website_folder'

checkPath() { 

if [[ -z $OLDPATH ]]; then  
  OLDPATH="$PATH";  
  PATH="${PATH}:${PWD}/vendor/bin"; 
else 
  PATH="${OLDPATH}:${PWD}/vendor/bin"
fi 

}

if 조건은 명령이 실행될 때마다 새 경로가 추가되는 것을 방지합니다. 따라서 원본 $PATH+ 작업 디렉토리가 항상 $PWD/vendor/bin어디에 있는지 알 수 있습니다.$PWD

그리고 이를 쉘에 설정하십시오:

PROMPT_COMMAND='checkPath'

쉘 프롬프트가 나타날 때마다 위 코드를 사용하십시오(명령 실행이 완료되면 PROMPT_COMMAND내용(이 경우 checkPath 함수)이 실행됩니다).

따라서 다음을 입력하면:

cd /home/www/example_1.com

가질 것이다 $PATH:

/home/www/example_1.com/vendor/bin

이것을 다음과 같이 바꾸면 example_2.com:

cd /home/www/example_2.com 
#or 
cd ../example_2.com

가질 것이다 $PATH:

/home/www/example_2.com/vendor/bin

피해

/home/www이 해결 방법을 사용하는 것이 유용할 수 있지만 다음과 같은 디렉터리로 변경하는 경우 $PATH:

/home/www/vendor/bin

보시다시피 $PATH에는 존재하지 않는 디렉터리가 있을 수 있지만 내가 아는 한 이것이 쉘에 문제를 일으키지는 않습니다. 단지 PATH가 매번 변경된다는 점을 기억하십시오.CD다른 디렉토리로). 존재하는 경우 /home/www/vendor/bin이 디렉토리의 파일은 PATH이 변수로 식별됩니다.


drush또한 제공된 명령은 시스템에 전체적으로 설치한 경우 (예: ) /usr/bin작동하지 않습니다 .drush/home/www/example_?.com/vendor/bin/

이 문제에 대한 해결책은 추가하는 ${PWD}/vendor/bin대신 앞에 추가하는 것입니다 $PATH.

checkPath() { 

if [[ -z $OLDPATH ]]; then  
  OLDPATH="$PATH";  
  PATH="${PWD}/vendor/bin:${PATH}"; 
else 
  PATH="${PWD}/vendor/bin:${OLDPATH}"
fi 

}

관련 정보