为什么在Mac OS X终端中标准输入不会显示我输入的内容?

12 投票
3 回答
3354 浏览
提问于 2025-04-15 13:43

我对我的Mac OS X终端和Django的manage.py命令行工具以及调试工具pdb的一些行为感到困惑。

当我打开一个新的终端时,我输入的内容会在屏幕上显示出来。但是,如果出现错误,屏幕上突然就不显示我输入的内容了。这种情况会一直持续,直到我关闭那个终端窗口。

虽然输入还是被记录下来了,因为我可以看到标准输出的内容。

比如在pdb.set_trace()中,我可以输入'l'来查看我在代码中的位置。但是,'l'这个命令不会显示出来,屏幕上只会出现一个空的提示符。

这让调试变得很困难,因为我无法知道自己到底输入了什么。

这可能是什么原因造成的,我该怎么解决这个问题呢?

3 个回答

-1

试着在Mac OS X上安装readline:

$ sudo easy_install readline

这只是我的一个猜测,但也许这样能解决你的问题。

3

如果你退出pdb(Python调试器),你可以输入reset,这样标准输入的回显就会恢复正常。我不太确定在pdb里面能不能执行类似的操作。不过要注意,这样做会清除当前显示的内容。

30

这可能是因为在运行Django的时候出现了错误。有时候,标准输入会消失,这是因为使用了stty这个命令。你可以手动隐藏你的输入,方法是输入:

$ stty -echo

这样你就看不到自己输入的内容了。要恢复这个状态并解决问题,只需输入:

$ stty echo

这样就可以了。

撰写回答