Я хочу использовать .sh скрипт для развертывания моего приложения. Этот скрипт находится на моем домашнем сервере (Ubuntu 15.10 Server) и помечен как исполняемый. Доступ к этому сценарию осуществляется через ssh, с помощью этого руководства я настроил ssh login, который запускает этот сценарий. Поэтому я просто вызываю 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/gameswhich envотображает/usr/bin/env
Я также попробовал следующие вещи:
- запуск скрипта напрямую как
bash deploy.shпод root (так как он такой же, как у этого пользователя) - отлично работает без ошибок - запускать ошибочные команды напрямую - также без ошибок
Так что это кажется мне очень специфическим случаем, почему эта команда не работает. Я потратил 12 часов на его отладку и у меня нет идей здесь
PS: Подобная ошибка (/usr/bin/env: node: No such file or directory) возникает при bower install (с использованием Bower), но не при запуске npm install (с использованием NPM).

