Alice
Alice

Reputation: 424

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

When I run a batch file that runs bash -c (part of windows subsystem for linux/Bash on ubuntu on windows) as a child process of an exe (pidgin), even if the exe is elevated/administrator in Windows the batch file errors:

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

The .bat file that I am running is:

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

What I intend to do is have it as a 'buddy pounce' in pidgin so that when I get a message from Nickserv, it will notify me everywhere.

I also tried to execute the command from pidgin directly rather than running as a bash file, but the curl never happens, and I don't get a notification through pushbullet. But if I run the exact same command in CMD or in Run, it will use bash and execute the curl successfully. pidgin ui of buddy pounce configuration

I also found this question: Calling Windows subsystem for Linux apps through PowerShell/cmd but I'm not sure if it answers that this cannot be done because you clearly can put a bash command in a bat file.

Upvotes: 1

Views: 801

Answers (2)

Alice
Alice

Reputation: 424

Change the path to C:\Windows\sysnative\bash.exe. Pidgin is 32-bit so it aliases C:\Windows\System32 to C:\Windows\SysWOW64 and C:\Windows\sysnative to C:\Windows\System32. It would probably make sense for MS to symlink a bash.exe in SysWOW64 to the real one.

Upvotes: 0

Ciano
Ciano

Reputation: 554

Have you tried fully specifying the path to the bash shell in your batch file?

If you replace the bash command in your curl.bat file with c:\Windows\System32\bash.exe things may work a little better. Seems like pidgin doesn't have your full path environment variable available to the process it spawns.

Upvotes: 1

Related Questions