[英]Determine calling executable in Python
我正在开发一个命令行应用程序,用于启动具有预生成环境的子shell。
subprocess.call(subshell, shell=True, env=custom_environment)
它启动subshell.bat
或subshell.sh
具体取决于当前的操作系统。
subshell = "subshell.bat" if os.name == "nt" else "subshell.sh"
但我希望支持Cygwin,Git Bash和其他在Windows上运行的人,他们每个人都需要获得subshell.sh
,即使操作系统是Windows。
我想如果有一种方法可以确定Python进程的调用可执行文件,我可以反而检查一下。
if calling_executable in ("bash", "sh"):
subshell = "subshell.sh"
elif calling_executable in ("cmd", "powershell"):
subshell = "subshell.bat"
else:
sys.exit() # unsupported shell
但我不知道该怎么做。 关于如何以不同方式进行的任何想法或建议?
用法示例
$ mytool --enter
Entering subshell for bash.exe
PS。 这个问题的措辞完全相同,但不涉及类似的问题,所以向它添加一个不相关的问题是不对的。
如果您不能仅仅依靠检查操作系统,我建议添加命令行参数来指示版本。 它可能会使程序更“Pythonic”,因为“显式优于隐式”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.