在Windows上无法使用os.system()调用bash脚本

1 人不认可

我有一个非常简单的bash脚本 test.sh ,如下所示

#!/usr/bin/env bash
mkdir "/c/AAA"

我想在python中执行这段代码。当我在python中调用os.system(r"Y:\test.sh")时,弹出一个窗口,问我想用哪个程序打开test.sh。然后python会以输出0结束,并且在我的C盘中没有创建文件夹。我在网上找不到任何解决方案。希望能得到任何帮助。)

5 个评论
这是什么操作系统?替换代码0】看起来像*nix,但 Y:\\ 看起来像windows...
在Windows的背景下, #!/usr/bin/env bash 的预期行为是什么?
如果这就是整个脚本,那么即使你能够启动它(这在Windows上不是小事),它也不会做任何有用的事情。你真正想做的是什么?你为什么不用python来创建一个目录?
@TomDalton,完全没有;Windows不读取或尊重Shebangs -- 它使用一个文件扩展名列表,映射到注册表中的处理程序。
mingw提供的bash可执行文件在你的Windows PATH中吗?如果是的话,你也许可以把它变成 os.system('bash test.sh') (不过请不要这样做;即使是 subprocess.call(['bash', 'test.sh']) 也更好)。
python
bash
shell
os.system
Stack_Protégé
Stack_Protégé
发布于 2019-10-29
2 个回答
H_DANILO
H_DANILO
发布于 1-01-01
已采纳
0 人赞同

os.system()会像windows cmd一样调用你的命令,在这种情况下,windows不知道如何执行*.sh文件,所以它打开了它的默认对话框,所以你可以选择一个你知道可以运行它的程序。

如果你打开windows终端并试图调用此类文件,也会发生同样的情况。

如果你的窗口有一个bash解释器,试着这样调用它。