bash提示被写入到什么设备

  • 本文关键字:提示 bash python bash
  • 更新时间 :
  • 英文 :


我实际上并没有试图让这段特定的代码正常工作,但它的输出让我怀疑提示到底写在哪里

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

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

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

这并没有捕捉到stderr中的提示,但也没有像我预期的那样打印到屏幕上(没有出现类似user@host的内容(。

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

您可以使用unbuffer使bash的副本认为stderr是TTY,即使它真的要进入FIFO;这将导致它在原本会抑制提示的情况下发出提示。

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

注意,shell=True已被删除——我们不想在bash的另一个副本中启动bash的一个副本。

最新更新