http://qs1969.pair.com?node_id=11121690


in reply to Re^3: Filename Surrounded by Quotes in a Scalar Variable Causes Open to Fail
in thread Filename Surrounded by Quotes in a Scalar Variable Causes Open to Fail

The windows shell requires double quotes around paths which contain spaces

This doesn't accurately describe Windows behaviour. In the cmd.exe shell (on Windows 7) I can do:
C:\>mkdir "with a space" C:\>cd with a space C:\with a space>
Sure, the first command needed the quotes. Otherwise I create 3 directories - namely "with", "a", and "space".
But the second command does not need any quotation at all.

Contrast this with the bash shell on Debian:
sisyphus-sis@debian-sis:~$ mkdir "with a space" sisyphus-sis@debian-sis:~$ cd with a space -bash: cd: with: No such file or directory sisyphus-sis@debian-sis:~$ cd "with a space" sisyphus-sis@debian-sis:~/with a space$
There's a similarity with Windows - without the quotes in the first command, directories "with", "a" and "space" will again be created.
However, here we see that, unlike the Windows cmd.exe shell, the Debian bash shell also requires quotes for the second (cd) command.

It therefore seems to me that your assertion is more applicable to Debian than to Windows.

Cheers,
Rob

Replies are listed 'Best First'.
Re^5: Filename Surrounded by Quotes in a Scalar Variable Causes Open to Fail
by afoken (Chancellor) on Sep 14, 2020 at 12:48 UTC
    C:\>cd with a space C:\with a space>

    I think this is a very special case in cmd.exe (and maybe also in command.com): cd/chdir needs exactly one parameter since MS DOS 1.0, so if it is passed more than one, cmd.exe silently combines them into a single parameter.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)
      I think this is a very special case in cmd.exe

      Yes, it's true that there are shell commands that do need the quotes (eg copy and move) but set is another command that does not need them.
      Running set PATH=%PATH%;C:\with a space works as intended.

      Anyway, it seems to me that the need for quotes is by no means specific to windows.
      Last night I indicated that cd on Windows doesn't need the quotes, though cd on Linux does.
      Tonight, I've noticed that set on Windows doesn't need the quotes, though export on Linux does.

      It's pretty clearly inaccurate to present the need for double quotes as a Windows thing - though I guess it could be argued that Bill wasn't actually claiming it was windows-specific.

      Cheers,
      Rob.