Я хочу використовувати .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
(за допомогою Композитор ). Все більш дивно, чим більше я дивлюся на цей сценарій. Перед цим рядком також називається /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 годин на налагодження, і я не мав тут ідей.
P.S .: Подібна помилка ( /usr/bin/env: node: No such file or directory
) виникає, коли є bower install
(за допомогою Бауер ), але ні під час запуску npm install
(за допомогою НПМ ).
sh deploy
і bash deploy
обидва дають однакові результати
/usr/bin/env > environment.txt
sh deploy
замістьbash deploy
(може бути, якийсь башизм). Як ви перевірили " наступні речі "? Рекомендую перевірити їх у скрипті, щоб ви могли виявити можливі заміщення та санітації envs.