SSH 호출에 서버에 존재하는 올바른 $path가 표시되지 않습니다.

SSH 호출에 서버에 존재하는 올바른 $path가 표시되지 않습니다.

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찾을 수 없는 것 같아요.

몇 가지 옵션이 있습니다. 다음은 네 가지 제안입니다.

  1. 이 쉘에서 이전에 호출한 적이 없는 경우 호출합니다 .bashrc(내 취향)..bash_profile
  2. PATH=...중복 행 추가 .bashrc(간단)
  3. 환경 설정을 및 .bash_profile에서 .bashrc제공하는 공개 파일 로 이동합니다(더 우아함)..bash_profile.bashrc
  4. 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 스크립트를 사용하여 명령이 실행됩니다.

관련 정보