从python中查找windows上bash可执行文件的位置
我正在编写一个程序来执行简短的shell一行程序(可能包括管道和后台任务等),我希望尽可能使它跨平台“正常工作” 对于mac/linux,以下各项似乎工作正常:从python中查找windows上bash可执行文件的位置,python,windows,bash,shell,subprocess,Python,Windows,Bash,Shell,Subprocess,我正在编写一个程序来执行简短的shell一行程序(可能包括管道和后台任务等),我希望尽可能使它跨平台“正常工作” 对于mac/linux,以下各项似乎工作正常: shell=os.environ.get(“shell”,“bin/bash”) subprocess.Popen([shell,“-c”,脚本内容]) 但是,在windows上: SHELL通常不设置 假设安装了bash,那么可以在各种不同的地方找到可用的bash可执行文件 在windows中,使此操作尽可能可靠的最佳方法是什么?您
shell=os.environ.get(“shell”,“bin/bash”)
subprocess.Popen([shell,“-c”,脚本内容])
但是,在windows上:
SHELL
通常不设置在windows中,使此操作尽可能可靠的最佳方法是什么?您正在寻找
C:\windows\System32\cmd.exe
如果您正在进行跨平台操作,您可以使用
sys.platorm
查找用户正在使用的平台。在窗口中,“COMSPEC”包含当前命令程序的名称。您可以将无条件查找写入环境中的查找。通常,最好采用这种方法,因为在许多情况下,python脚本可以从“git bash”、WSL或类似的工具执行。无需为特定平台显式编程
请参阅:如果安装了Windows git客户端,则应该安装git bash,因此在CMD窗口中:
set SHELL="c:\Program Files\Git\bin\bash.exe"
然后您可以运行python程序。我认为cmd.exe不是我想要的。具体地说,我想为POSIX shell编写一行程序(通常是bash,但大多数bash行将在zsh、fish、tcsh等中工作),这可能看起来像
someexecutable>/dev/null 2>&1&代码>。我认为在开发人员windows机器上有一个合理的机会可以使用bash,我主要需要找到它。我的理解是,cmd.exe通常不会使用与*nix shell相同的语法/语义。