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

bash -c from bat file spawned from exe not a command

当我 运行 运行 的批处理文件 bash -c(windows 子系统的一部分 linux/Bash on ubuntu on windows) 作为 exe (pidgin) 的子进程,即使 exe 在 Windows 中是 elevated/administrator 批处理文件错误:

'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

我打算做的是将它作为洋泾浜语中的 'buddy pounce',这样当我从 Nickserv 收到消息时,它会到处通知我。

我还尝试直接从 pidgin 执行命令而不是 运行ning 作为 bash 文件,但卷曲从未发生,我没有通过 pushbullet 收到通知。但是,如果我在 CMD 或 运行 中 运行 完全相同的命令,它将使用 bash 并成功执行 curl。

我也发现了这个问题: 但我不确定它是否回答说这不能完成,因为你显然可以将 bash 命令放在 bat 文件中。

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

如果您将 curl.bat 文件中的 bash 命令替换为 c:\Windows\System32\bash.exe,事情可能会好一些。似乎 pidgin 没有可用于它生成的进程的完整路径环境变量。

将路径更改为 C:\Windows\sysnative\bash.exe。 Pidgin 是 32 位的,所以它别名 C:\Windows\System32 到 C:\Windows\SysWOW64 和 C:\Windows\sysnative 到 C:\Windows\System32。对于 MS 来说,将 SysWOW64 中的 bash.exe 符号链接到真实的

可能是有意义的。