Primeiro, um prompt de comando não é um interpretador de comandos. ( Um prompt de comando é a coisa exibida por um interpretador de comandos. ) Em segundo lugar, seu interpretador de comandos, os avisos que ele emite e os consoles do Win32, não têm nada para fazer isso.
Nos programas Win32, dividindo a linha de comando em "palavras" - as cadeias de caracteres multibyte terminadas em NUL que os programas nas linguagens C e C ++ veem como a matriz de argumentos passada para main()
- é a província da bibliotecas de tempo de execução desses programas. No Unices e Linux, o shell faz a divisão de palavras, porque o sistema operacional realmente funciona em termos de um array de string de argumento. Este não é o caso do Win32. No Win32, o próprio sistema operacional opera em termos de cauda de comando : uma única cadeia longa que ainda contém todas as aspas originalmente digitadas na linha de comando. (Existe algum processamento feito para este comando por um interpretador de comandos antes de ser passado para o programa alvo, mas não está relacionado com a divisão de palavras.)
No seu caso, a biblioteca de tempo de execução para o seu programa hg
está sendo entregue nesta linha de comando:
commit -m 'Initial commit'
A biblioteca de tempo de execução com a qual o programa foi compilado não sabe que você quis dizer uma aspa simples para ser um caractere de aspas em branco, porque não é a convenção . A convenção trata apenas entre aspas duplas (e barras invertidas antes das aspas duplas).
Essa convenção é embutida na biblioteca de tempo de execução que foi fornecida com o compilador usado para criar o programa em primeiro lugar. Se você quiser mudar a convenção, você terá que re-linkar cada programa individual que você quer rodar desta forma com uma biblioteca especial de tempo de execução criada por você e que também reconheça as aspas simples. Claramente isso é impraticável (a menos que sejam todos os programas do Cygwin).
Uma abordagem muito mais prática é fazer o que você já está fazendo: reconhecer que o Windows não é Unix e ajustar os exemplos de acordo antes de usá-los.