从exe文件中生成的bat文件中的bash -c而不是命令

时间:2016-09-29 14:16:14

标签: windows bash batch-file windows-subsystem-for-linux

当我运行一个批处理文件,运行bash -c(windows子系统的一部分,用于Linux上的ubntu上的linux / Bash)作为exe(pidgin)的子进程时,即使exe被提升/管理员Windows批处理文件错误:

'bash' is not recognized as an internal or external command,
operable program or batch file.

我正在运行的.bat文件是:

bash -c "curl --silent -u '''my api key'':' -d type='note' -d body='My Message' -d title='My Subject' 'https://api.pushbullet.com/v2/pushes'"
pause #disable after debugging

我打算做的就是把它作为一个伙伴突然出现的'在pidgin中,当我从Nickserv收到消息时,它会在任何地方通知我。

我也尝试直接从pidgin执行命令,而不是作为bash文件运行,但是curl从未发生过,我也没有通过pushbullet获得通知。但是如果我在CMD或Run中运行完全相同的命令,它将使用bash并成功执行curl。 pidgin ui of buddy pounce configuration

我也发现了这个问题:Calling Windows subsystem for Linux apps through PowerShell/cmd但是我不确定它是否能解决这个问题,因为你明显可以在bat文件中添加bash命令。

2 个答案:

答案 0 :(得分:1)

您是否尝试在批处理文件中完全指定bash shell的路径?

如果用c:\ Windows \ System32 \ bash.exe替换curl.bat文件中的bash命令,事情可能会好一些。看起来像pidgin没有完整的路径环境变量可用于它产生的过程。

答案 1 :(得分:0)

将路径更改为C:\ Windows \ sysnative \ bash.exe。 Pidgin是32位,因此它将C:\ Windows \ System32别名为C:\ Windows \ SysWOW64,将C:\ Windows \ sysnative别名为C:\ Windows \ System32。对于MS来说,将SysWOW64中的bash.exe符号链接到真实的可能是有意义的。