探测周围外壳的工具
shellingham的Python项目详细描述
shellingham检测当前python可执行文件运行的shell。
用法
>>> import shellingham >>> shellingham.detect_shell() ('bash', '/bin/bash')
detect_shell查看进程的运行环境以确定 它是什么外壳。它返回一个2元组:
- 外壳名称,总是小写的。
- 用于运行shell的命令。
^如果detect_shell未能检测到 周围的贝壳。
注释
- shell名称总是小写的。
- 在windows中,shell名称是可执行文件的名称,减去文件 埃克塞滕。
- 当前该命令只包含windows上的可执行文件名,即使 命令由完整路径调用。这在未来可能会改变。
应用程序开发人员注意事项
记住,应用程序的用户不一定使用shell。 如果没有要检测的shell,shellingham将引发ShellDetectionFailure, 但是应用程序几乎不应该对用户这样做。
一种实用的方法是在try块中包装detect_shell,然后 失败时提供正常的默认值:
try: shell = shellingham.detect_shell() except shellingham.ShellDetectionFailure: shell = provide_default()
有几个选择供你选择。
- posix标准要求环境变量SHELL引用 “用户首选的命令语言解释器”。这个随时都有 (即使用户不在交互会话中),并且很可能是正确的 用于启动交互式子shell的选项。
- 命令{tt7}$几乎存在,可能在^ {tt8}$,因为 一些posix工具依赖于它。如果您想运行 (可能是非交互式的)脚本。
- 所有版本的dos和windows都有一个环境变量COMSPEC。 这始终可用于启动可用的命令提示符(例如cmd.exeon 窗户)。
下面是一个提供默认shell的简单实现:
import os def provide_default(): if os.name == 'posix': return os.environ['SHELL'] elif os.name == 'nt': return os.environ['COMSPEC'] raise NotImplementedError(f'OS {os.name!r} support not available')