-
Notifications
You must be signed in to change notification settings - Fork 71
Description
Hi there.
Problem
I was trying to deploy my project to a Debian server, which has dash configured as the default shell. I was running into weird errors like this:
--> Deploying to production environment
--> on host ***
○ deploying origin/master
○ executing pre-deploy-local
○ executing pre-deploy `node -v && npm -v`
v16.13.0
8.1.0
sh: 1: Bad substitution
pre-deploy hook failed
Deploy failed
Deploy failed with exit code: 1Cause
After some digging, I conjecture that the deployment script uses some bash-specific features not compatible with dash. For example, this line...
Line 212 in 987428a
| run "mkdir -p $path/{shared/{logs,pids},source}" |
...does not expand correctly, treating curly braces as part of the directory name:

Ultimately the point of failure is ssh running commands in whatever is configured to be the default shell:
Line 122 in 987428a
| $shell $@ |
Proposed changes
It would be great if the script either
- was rewritten in a portable style, or
- executed its remote commands in
bash, which is probably a much easier fix.
Or, if you don't intend to change this behavior, it would be nice if it at least could be mentioned in the docs.
I tried tweaking that part of the script myself, but unfortunately didn't have enough shell knowledge to succeed.
Prior report: Unitech/pm2#1553
Thanks.