检测周围Shell的工具
项目描述
Shellingham检测当前Python可执行文件运行的Shell。
用法
>>> import shellingham
>>> shellingham.detect_shell()
('bash', '/bin/bash')
detect_shell通过探索进程的运行环境来确定它在哪个Shell中运行。它返回一个2元组
Shell名称,总是小写。
运行Shell的命令。
如果detect_shell无法检测到周围的Shell,将引发ShellDetectionFailure。
注意
Shell名称始终是小写。
在Windows上,Shell名称是可执行文件名称,不包括文件扩展名。
应用开发者注意事项
记住,您的应用程序的用户不一定使用shell。如果无法检测到shell,Shellingham会引发ShellDetectionFailure,但您的应用程序几乎不应这样做来影响用户。
解决这个问题的实际方法是使用try块包装detect_shell,并在失败时提供合理的默认值。
try:
shell = shellingham.detect_shell()
except shellingham.ShellDetectionFailure:
shell = provide_default()
您有几个选择可供选择。
POSIX标准强制要求环境变量SHELL指向“用户的首选命令语言解释器”。这始终可用(即使用户不在交互会话中),并且可能是启动交互式子shell的正确选择。
命令sh几乎可以肯定存在,可能位于/bin/sh,因为许多POSIX工具依赖于它。如果您想运行一个(可能是非交互式的)脚本,这应该是合适的。
所有版本的DOS和Windows都有一个环境变量COMSPEC。这始终可以用来启动一个可用的命令提示符(例如Windows上的cmd.exe)。
以下是提供一个默认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')
项目详情
关闭
shellingham-1.5.4.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de |
|
MD5 | 883d381da8fe788fb24428591e61eb20 |
|
BLAKE2b-256 | 58158b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e |
关闭
shellingham-1.5.4-py2.py3-none-any.whl的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686 |
|
MD5 | c7dfcd723fcc27c548ad3a7b06c976dc |
|
BLAKE2b-256 | e0f90595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822 |