我有一个Python 3 CLI应用程序,我想从中放入或生成一个交互式bash shell(在设置了一些自定义环境变量之后(。
在Python中嵌入或生成交互式bash shell的最佳方法是什么?
更多详细信息
整个过程可以描述为以下6个步骤:
-
用户在终端会话中启动我的CLI应用程序。(无论应用程序是在iTerm还是Xterm诸如此类的环境中运行,它都应该工作,但底层系统是Unix系统。(
-
然后应用程序通过提示从用户那里收集一些信息(因此应用程序使用stdin和stdout(。
-
然后它应该生成一个bash shell提示符。这个狂欢假定为:
- 在与我的应用程序相同的终端会话中运行
- 使用由我的应用程序预先设置的带有一些自定义环境变量的环境
-
用户在bash shell中执行一些命令(使用以前我的应用程序中的相同stdin和stut(。
-
用户通过Ctrl-d或
exit
存在bash shell。 -
bash shell关闭,我的Python应用程序在同一个终端会话中再次接管。它做了一些后期[制作和完成。
我要问的部分是步骤3(生成bash shell(
我试图引发一场狂欢
-
我尝试使用标准库中的代码模块,但这只允许我启动Pythonshell,而不是bashshell。
-
我用了sh包:
from sh import bash bash('-i')
这也不起作用。
只是:
import subprocess
subprocess.run(['bash', '-li'])
您可以通过env
函数参数以及--rcfile
bash参数传递自定义环境。
这能解决你的问题吗:
import os
os.system("x-terminal-emulator -e /bin/bash")
获得升级的外壳
python3 -c 'import pty; pty.spawn("/bin/bash")'