Due to insufficient quoting, install-sh fails for names (source or dest) that contain spaces or some shell meta-characters. E.g.,
$ mkdir /tmp/x\ y $ touch a\ b $ bash install-sh 'a b' /tmp/x\ y install-sh: line 150: [: /tmp/x: binary operator expected mv: when moving multiple files, last argument must be a directory Try `mv --help' for more information. [Exit 1] Plus, there was a bit of unnecessary quoting and some other minor problems. I've fixed them, so now this works as it should: $ mkdir /tmp/x\ y $ touch a\ b $ bash install-sh a\ b /tmp/x\ y $ ls /tmp/x\ y a\ b* I've just checked in this change: 2002-11-09 Jim Meyering <[EMAIL PROTECTED]> Make install-sh work even when names contain spaces or certain (but not all) shell metachars. * lib/install-sh: Remove lots of unnecessary quoting. Add double quotes where necessary. Write diagnostics to stderr, not stdout. Normalize spacing in diagnostics: use one space (not two, and not a TAB) after the leading `install:'. Remove trailing white space. Remove unnecessary curly braces. If removing the destination fails, also try to move it aside. Use `trap' more portably. * tests/installsh2.test: New file, to test for the above fix. * tests/Makefile.am (TESTS): Add installsh2.test.