The parentheses are needed for the shell command to be executed properly.
The parentheses are needed for the shell command to be executed properly.

If the shell command looks like

  "condition1 && command1 || condition2 && command2 || command3"

then condition2 will never be checked if condition1 is true and command1
exists normally. In order for this code to run expectedly, it should look
like

  "(condition1 && command1) || (condition2 && command2) || command3"

instead.

Specifically, with the code like

  "[ ! -d /Users ]&& sudo mkdir /Users; sudo mount --bind /mnt/hgfs/Users /Users || [ -f /usr/local/bin/vmhgfs-fuse ]&& sudo /usr/local/bin/vmhgfs-fuse -o allow_other .host:/Users /Users || sudo mount -t vmhgfs -o uid=$(id -u),gid=$(id -g) .host:/Users /Users"

if both "[ ! -d /Users ]" and "sudo mkdir /Users; sudo mount --bind
/mnt/hgfs/Users /Users" are true, then the existence of a file
/usr/local/bin/vmhgfs-fuse will never be examined and always be executed
even if the file doesn't exist. Consequently, it always fails.

Signed-off-by: Motonori Shindo <8b18d35d58e8dea5d4fd047e9b9585281d2c36f1@shin.do>

ibuildthecloud/machine,exoscale/docker-machine,dweomer/docker-machine,ibuildthecloud/machine,docker/machine,exoscale/docker-machine,docker/machine,dweomer/docker-machine