Ubuntu 14.04에서는 Composer를 통해 Drush를 빌드하려고 했습니다.
PATH="~/.composer/vendor/bin:$PATH
서버 .bashrc
또는 .bash_profile
서버에 추가했습니다 .
Drush가 서버에서 올바르게 호출됩니다.
그러나 원격으로 작동하지 않습니다.
ssh myalias 'drush' bash: drush: command not found
echo $PATH
웹 서버와 리모콘을 확인해 보니 다음과 같습니다.
- 웹 서버에서:
/home/<MY_USER>/.composer/vendor/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
- 원격 통화에서:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
왜 차이가 있나요(차이 없음 /home/<MY_USER>/.composer/vendor/bin
)? 원격 콜백에 올바른 경로를 어떻게 추가합니까?
답변1
여기서는 다음과 같은 몇 가지 가정을 해보겠습니다.
drush
에 설치됨~/.composer/vendor/bin
myalias
현재 있는 원격 호스트의 이름입니다.drush
myalias
언급한 웹 서버는 실제로 예제 명령과 동일합니다.
bash
쉘을 사용하여 대화형으로 로그인하면 bash
시작 스크립트가 실행됩니다. 여기에서 .bash_profile
설정하면 PATH
모든 것이 정상이며 drush
직접 찾을 수 있습니다.
예를 들어 비대화식으로 실행하는 경우 ssh remotehost id
로그인 셸이 없으므로 .bash_profile
실행되지 않습니다. 그러나 쉘은 bash
세션 스크립트를 실행하므로 .bashrc
. PATH
거기에 설정 하지 않아서 drush
찾을 수 없는 것 같아요.
몇 가지 옵션이 있습니다. 다음은 네 가지 제안입니다.
- 이 쉘에서 이전에 호출한 적이 없는 경우 호출합니다
.bashrc
(내 취향)..bash_profile
PATH=...
중복 행 추가.bashrc
(간단)- 환경 설정을 및
.bash_profile
에서.bashrc
제공하는 공개 파일 로 이동합니다(더 우아함)..bash_profile
.bashrc
drush
시스템 위치(예:/usr/local/bin
또는 아래 어딘가 )에 설치하고/opt
해당 디렉토리가 시스템 전체PATH
설정에 포함되어 있는지 확인하십시오(어려움).
답변2
PATH="~/.composer/vendor/bin:$PATH" ssh myalias 'drush'
수정된 PATH
콘텐츠 ssh
와 해당 콘텐츠가 호출하는 모든 유틸리티가 제공됩니다.
답변3
또 다른 옵션(여기 문서 참조:https://www.drush.org/latest/site-aliases/)
drush 스크립트나 drush 실행 프로그램에 경로를 추가하기만 하면 됩니다.
Drush 사이트 별칭 파일(일반적으로 self.site.yml)에 다음을 추가합니다.
paths:
drush-script: '/path/to/drush'
그러면 반드시 PATH 변수에 있을 필요는 없는 drush 스크립트를 사용하여 명령이 실행됩니다.