【发布时间】:2021-09-14 13:59:23
【问题描述】:
假设我想在我的脚本之外运行另一个终端。我会先做:
from subprocess import Popen
然后我会打电话:
Popen(['xterm (or insert terminal name here)', '-e', 'xterm'])
这很好,但我想知道是否有办法找到用户正在运行 Python 脚本的终端名称(用户输入的终端 ./python_application_name_here.py),假设变量是叫x。
有没有办法可以做到这一点?:
Popen([str(x), '-e', str(x)])
我找到了一种在 Java 中执行此操作的方法,但我不太了解该语言:how to get the linux terminal name
【问题讨论】:
-
这个问题不是获取用户正在使用的终端,它只是返回用户系统上安装的任何终端。如果安装了多个终端,它将返回数组中的第一个。
-
在 MacOS 上,环境变量
TERM_PROGRAM包含终端应用程序的名称。我不知道在其他操作系统上是否也是如此。 -
如果用户通过 ssh 连接,或者通过串行线连接的实际硬件终端怎么办?
-
挖了很久才发现在Linux上这个环境变量叫TERM。所以现在我现在基本上可以做的是
'env' >> whatever.txt然后只是open()在python中查找变量名TERM。感谢@Barmar 的建议。 -
跨站点重复,用处有限:unix.stackexchange.com/questions/481142/… 在字里行间,它告诉您在 Debian(以及 Ubuntu、Mint 等)上,命令
x-terminal-emulator将启动管理员(尽管也许不是用户的;这很模糊,所以许多管理员只会保留默认的)首选图形终端。
标签: python python-3.x terminal subprocess