用于Windows的Git中的Bash:使用带有args的CMD.exe/C运行命令时的怪异

Arc*_*tem 24 windows git bash cmd git-bash

这更令人烦恼而不是问题,但我非常想了解这里的语义.

我想要做的就是在临时命令提示会话上运行任意命令,该会话本身在bash会话下运行.

我的成功率是50/50,因为一些命令按预期工作,而其他命令则没有那么多.

我认为问题可能在于没有正确排列的参数(即缺失或合并的参数)

我会尽力解释我的意思是怪异的一系列命令和响应.(我正试着在屏幕上打印测试字.)

我在GNU bash下运行这些,版本3.1.0(1)-release(i686-pc-msys)与Git-1.8.4捆绑在一起:

第一次尝试:

$ cmd /c echo test
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
c:\>
Run Code Online (Sandbox Code Playgroud)

第二次尝试:

$ cmd '/c echo test'
test"
Run Code Online (Sandbox Code Playgroud)

第三次尝试:

$ cmd "/c echo test"
test"
Run Code Online (Sandbox Code Playgroud)

第四次尝试:

$ cmd /c\ echo\ test
test"
Run Code Online (Sandbox Code Playgroud)

第五次尝试:

$ cmd "/c echo" test
'echo" test' is not recognized as an internal or external command,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

我真的很感激上述行为的任何指示或见解,因为这对我来说是不合理的,让我疯狂!

编辑: 还有一个问题与此类似,但实际上并非如此,主要是因为它是关于通过CMD/C运行批处理文件而不需要任何参数.

它并没有真正回答我关于如何正确地为windows命令行应用程序提供参数的问题,即使这些示例是关于CMD/C的,这里的答案也可以应用于许多其他Windows命令行应用程序.

pat*_*yts 38

这实际上记录在ReleaseNotes文件中(在已安装的Git for Windows的顶级文件夹中)

此外,必须特别注意通过Windows程序Windows路径,因为他们不知道MSys样式POSIX路径 - 你可以使用类似$(cmd // c echo"$ POSIXPATH")的东西.

如果你使用cmd //c echo test它按预期工作.

$ cmd //c echo test
test
Run Code Online (Sandbox Code Playgroud)

原因是尝试确保posix路径最终正确传递给git实用程序.出于这个原因,Git for Windows包含一个影响命令参数的修改过的MSYS层.您应该注意,Git for Windows提供的bash shell和工具不能用作Windows的通用unix工具.如果你想要一个通用的unix风格的工具集,那么你应该安装MSYS或cygwin.Git Bash shell设置为使用git,有时显示.


小智 6

阅读本文后,我找到了对我有用的解决方案:

$ cat gvim.sh
cmd << EOD
gvim $@
EOD
$
Run Code Online (Sandbox Code Playgroud)

Windows 8.1,Git(版本1.9.5-preview20141217),GNU bash,版本3.1.20(4)-release(i686-pc-msys).

  • 什么文章?你能提供一个链接吗? (3认同)