Quiero usar el script .sh para la implementación de mi aplicación. Ese script está en mi servidor doméstico (Ubuntu 15.10 Server), marcado como ejecutable. El acceso a este script se realiza a través de ssh, utilizando este tutorial, he configurado ssh login, que ejecuta ese script. Básicamente, solo llamo ssh deployer@XXX.com someArgumentsy ejecuta mi script con someArgumentsparámetros. El usuario deployertiene uid = 0, por lo que es básicamente root(esto cambiará en el futuro, lo configuré solo para eliminar los problemas de permisos hasta que funcione bien).
Y aquí es donde las cosas se ponen difíciles. El script informa /usr/bin/env: php: No such file or directoryen el comando /bin/composer install(usando Composer ). Las cosas son más raras cuanto más miro ese guión. Antes de esta línea, también se llama /bin/composer self-updatey /bin/composer -V, que se ejecuta correctamente y muestra la salida correcta.
He comprobado las siguientes cosas:
/usr/bin/env php -vmuestra la versión correcta de PHP (igual que/usr/bin/php -v)whereis phpmuestraphp: /usr/bin/php /usr/local/bin/php /usr/share/man/man1/php.1.gzphp5-cliel paquete está instalado y la versión más nueva$PATHcontiene/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gameswhich envmuestra/usr/bin/env
También he intentado lo siguiente:
- Ejecutar el script directamente como
bash deploy.shroot (ya que es el mismo que el usuario): funciona perfectamente sin errores - ejecutar comandos fallidos directamente, también perfectamente sin errores
Esto me parece un caso muy específico, por qué este comando no funciona. Pasé 12 horas depurándolo y no tengo ideas aquí.
PD: Se /usr/bin/env: node: No such file or directoryproduce un error similar ( ) cuando hay bower install(usando Bower ), pero no cuando se ejecuta npm install(usando NPM ).
sh deployy bash deployambos dan los mismos resultados
/usr/bin/env > environment.txt

sh deploylugar debash deploy(quizás algo de bashism). ¿Cómo comprobaste las " cosas siguientes "? Recomiendo verificarlos en el script, para que pueda descubrir eventuales anulaciones y desinfecciones de envs.