내 앱 배포에 .sh 스크립트를 사용하고 싶습니다. 이 스크립트는 내 홈 서버 (우분투 15.10 서버)에 있으며 실행 가능으로 표시되어 있습니다. 이 스크립트에 대한 액세스는 ssh를 통해 수행되며, 이 학습서를 사용하여 해당 스크립트를 실행하는 ssh 로그인을 설정했습니다. 기본적으로 방금 호출 하면 매개 변수로 ssh deployer@XXX.com someArguments스크립트를 실행 someArguments합니다. 사용자 deployer는 기본적으로 uid = 0이므로 기본적으로 root변경됩니다 (향후 변경 될 것이므로 제대로 작동 할 때까지 권한 문제를 제거하도록 설정했습니다).
그리고 여기가 까다로운 곳이 있습니다. 스크립트 /usr/bin/env: php: No such file or directory는 명령에 작성합니다 /bin/composer install( Composer 사용 ). 내가 그 스크립트를 더 많이 볼수록 상황이 더 이상해집니다. 이 줄 앞에는 및가 /bin/composer self-update있으며 /bin/composer -V,이 둘 다 올바르게 실행되고 올바른 출력을 표시합니다.
다음 사항을 확인했습니다.
/usr/bin/env php -v올바른 PHP 버전을 표시합니다 (와 동일/usr/bin/php -v)whereis php표시php: /usr/bin/php /usr/local/bin/php /usr/share/man/man1/php.1.gzphp5-cli패키지가 설치되고 최신 버전$PATH포함/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gameswhich env표시/usr/bin/env
나는 또한 다음과 같은 것들을 시도했다.
bash deploy.sh루트 와 마찬가지로 스크립트를 직접 실행 (사용자와 동일하므로)-오류없이 완벽하게 작동- 실패한 명령을 직접 실행-오류없이 완벽하게 실행
따라서 이것은 매우 구체적인 경우 인 것 같습니다.이 명령이 작동하지 않는 이유는 무엇입니까? 나는 그것을 디버깅하는 데 12 시간을 보냈으며 여기서 아이디어가 없습니다.
추신 : 비슷한 오류 ( /usr/bin/env: node: No such file or directory)가있을 때 bower install( Bower 사용 ) 발생 하지만 실행 되지 않을 때 npm install( NPM 사용 ) 발생합니다.
sh deploy그리고 bash deploy모두 같은 결과를 얻을 수
/usr/bin/env > environment.txt

sh deploy대신bash deploybashism을 실행하십시오 . " 다음 사항 "을 어떻게 확인 했 습니까? 필자는 스크립트에서이를 확인하여 결국 env의 재정의와 위생을 발견 할 것을 권장합니다.