实际上,我并没有试图让这段特定的代码正常工作,但它的输出让我怀疑,提示究竟是写在哪里的。在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
是非常奇怪的。我的问题是为什么提示没有出现
您可以使用
unbuffer
使您的bash副本认为stderr是一个TTY,即使它实际上是一个FIFO;这将导致它在本应禁止提示时发出提示请注意
shell=True
已被删除,我们不希望在另一个bash副本中启动一个bash副本相关问题 更多 >
编程相关推荐