Windows下Git Bash(MINGW)传递以/开头的外部程序参数被篡改的原因问询
Windows下Git Bash(MINGW)传递以/开头的外部程序参数被篡改的原因问询
我最近在Git Bash(也就是MINGW环境)里碰到了个挺费解的问题,想跟大家请教下原因:
比如直接在bash里执行echo '/C=UK/',能正常输出/C=UK/,完全符合预期。但要是把这个参数传给外部程序,比如OpenSSL的命令:
openssl req -subj '/C=UK/'
结果直接报错,错误提示是:
req: the subject name is expected to be in the format /type0=value0/type1=value1/type2=... where characters may be escaped by . This name is not in that format: 'C:/Programs/Repository/Git/C=UK/'
你看,原本的/C=UK/居然被改成了C:/Programs/Repository/Git/C=UK/,完全变了样。更头疼的是,我尝试用变量来绕开这个问题,比如:
SUBJ='/C=UK/' openssl req -subj "$SUBJ"
结果还是一模一样的错误,参数照样被篡改了。
我实在想不通,为啥Git Bash/MINGW环境里,给外部程序传递以斜杠开头的参数时会出现这种情况?但像echo这种bash内置命令就完全正常,哪怕用单引号包裹参数也没用,用变量传递也解决不了问题,这到底是什么原因导致的呀?
内容来源于stack exchange
相关产品推荐
相关产品推荐

