bash提示写入哪个设备?

2024-10-02 00:23:21 发布

您现在位置:Python中文网/ 问答频道 /正文

实际上,我并没有试图让这段特定的代码正常工作,但它的输出让我怀疑,提示究竟是写在哪里的。在Python中考虑:

subprocess.run("bash", shell=True, stderr=subprocess.PIPE)

然后我键入fakecommand,点击回车,然后输入EOF。它返回:

CompletedProcess(args='bash', returncode=127, stderr=b'bash: line 2: fakecommand: command not found\n')

这不会捕获stderr中的提示,但也不会像我预期的那样打印到屏幕上(不会显示类似user@host

我知道用Python调用bash是非常奇怪的。我的问题是为什么提示没有出现


Tags: run代码bashtrue键入stderrlineargs
1条回答
网友
1楼 · 发布于 2024-10-02 00:23:21

您可以使用unbuffer使您的bash副本认为stderr是一个TTY,即使它实际上是一个FIFO;这将导致它在本应禁止提示时发出提示

subprocess.run(['unbuffer', 'bash'], stderr=subprocess.PIPE)

请注意shell=True已被删除,我们不希望在另一个bash副本中启动一个bash副本

相关问题 更多 >

    热门问题