내 앱 배포에 .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.gz
php5-cli
패키지가 설치되고 최신 버전$PATH
포함/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
which 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 deploy
bashism을 실행하십시오 . " 다음 사항 "을 어떻게 확인 했 습니까? 필자는 스크립트에서이를 확인하여 결국 env의 재정의와 위생을 발견 할 것을 권장합니다.