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
}