Я хочу использовать .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/games
which 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 ).
sh deploy
и bash deploy
оба дают одинаковые результаты
/usr/bin/env > environment.txt
sh deploy
вместоbash deploy
(возможно, какой-то башизм). Как вы проверили « следующие вещи »? Я рекомендую проверить их в сценарии, чтобы вы могли обнаружить возможные переопределения и санации envs.