Я хочу використовувати .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.gzphp5-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 годин на налагодження, і я не мав тут ідей.
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.