1

I am trying to call a git bash shell command from inside Windows operating system. Following is my code snippet. Can anyone please tell me, what I am doing wrong?

    git_bash_path = WindowsPath(r"c:\Users\abcd\AppData\Local\Programs\Git\git-bash.exe")
    command = "ls"
    subprocess.call([str(git_bash_path), command])

After running, the python script, it opens a bash window with the title in the window - /usr/bin/bash --login -i ls and in the git bash window the error is bash:/usr/bin/ls: cannot execute binary file.

I also tried -

    subprocess.check_output(command, shell=True, executable=str(git_bash_path)) 

but the error is the same.

infoclogged
  • 3,641
  • 5
  • 32
  • 53

2 Answers2

1

It should use the -c parameter:

bashCommand = "ls"
output = subprocess.check_output(['bash','-c', bashCommand])

Git for Windows comes with a bash.exe. It is is in the %PATH%, that should be enough.

VonC
  • 1,262,500
  • 529
  • 4,410
  • 5,250
0

What worked for me, in case %PATH% does not have bash.exe, do

command = fr'"%ProgramFiles%\Git\bin\bash.exe" -c "echo hello"'
r = subprocess.Popen(command, shell=True)

This assumes that Git Bash is installed in default Program Files location.

stapmoshun
  • 88
  • 1
  • 7