Note that even on Windows, you still have to deal with the shell interpreting what you type.
The biggest downside of the Windows way, though, is that there stops being one answer to "how do I pass arbitrary strings on the command line to another process"?
Sure, most programs use CommandLineToArgvW but it's also hard to find information on how a particular program parses its command line.
> Note that even on Windows, you still have to deal with the shell interpreting what you type.
Hypothetically that is not strictly true. You could create a shell that would be a very thin wrapper around CreateProcess and not do any interpretation or parsing of the childs arguments. In unixy shell must do at minimum some degree of parsing to split the arguments.
The biggest downside of the Windows way, though, is that there stops being one answer to "how do I pass arbitrary strings on the command line to another process"?
Sure, most programs use CommandLineToArgvW but it's also hard to find information on how a particular program parses its command line.
https://blogs.msdn.microsoft.com/twistylittlepassagesallalik... is an overview of the fun that is command line handling on Windows.