我想使用.sh脚本来部署我的应用程序。该脚本在我的家庭服务器(Ubuntu 15.10服务器)上,标记为可执行文件。使用ssh可以访问此脚本,使用本教程,我已经设置了运行该脚本的ssh登录。因此,基本上我只是调用ssh deployer@XXX.com someArguments
它,并someArguments
以参数的形式运行我的脚本。用户的deployer
uid = 0,因此基本上是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)则不会发生类似的错误。npm install
sh deploy
和bash deploy
两个给出相同的结果
/usr/bin/env > environment.txt
sh deploy
而不是bash deploy
(也许是一些bashism)。您如何检查“ 以下事项 ”?我建议在脚本中检查它们,以便您可以发现最终的覆盖和环境污染。