You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python打开新gnome-terminal终端并执行指定命令

问题根因

两个报错分别对应两个独立问题:

  • -e参数已被gnome-terminal弃用,当前版本要求使用--作为参数终止符,后面拼接要执行的命令
  • cd是shell内置命令,并非系统中独立存在的可执行文件,gnome-terminal默认会将后续参数直接作为可执行程序启动,因此无法直接识别cd、重定向、管道等shell语法,需要显式调用shell解释器执行命令串
    另外原写法里还存在单引号嵌套冲突的问题,外层单引号和echo命令的单引号提前闭合,导致命令解析错误。

可行解决方案

直接修改原有os.system写法

import os

os.system('gnome-terminal -- bash -c "cd /home/john/Documents; echo \'writing to file\' > testfile.txt; exec bash"')

各部分说明:

  • --:替代弃用的-e参数,标识后续所有内容都是要执行的命令参数
  • bash -c "命令串":显式启动bash shell,由shell解释执行内部的cd、重定向等语法
  • 末尾的exec bash:指定命令执行完成后保留终端,进入交互模式,如果不需要保留终端可删除该部分
  • 对echo命令的单引号做了转义,避免字符串提前闭合

更稳妥的subprocess写法(推荐)

使用subprocess的列表形式传参,不需要手动处理转义字符,兼容性更好:

import subprocess

command = [
    "gnome-terminal",
    "--",
    "bash",
    "-c",
    "cd /home/john/Documents; echo 'writing to file' > testfile.txt; exec bash"
]
subprocess.Popen(command)

内容的提问来源于stack exchange,提问作者hrmnsio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 23:24:05