【问题标题】:psql ruins my shell if I press Ctrl+C如果我按 Ctrl+C,psql 会破坏我的 shell
【发布时间】:2016-07-13 19:10:30
【问题描述】:

这有点奇怪。如果我启动psql,然后在提示输入密码时按Ctrl+C,程序似乎退出了,但我什至看不到我输入的内容虽然我回到了我的壳里。好像我输入的所有内容都被隐藏了,因为它仍然认为我在输入密码。

我发现的唯一解决方案是启动一个新的 shell,这很好,但不是很好。我很想了解这里发生了什么以及如何解决它。

【问题讨论】:

  • 尝试reset 命令重置您的终端
  • psql 关闭终端的回显模式,reset 重新开启。
  • 这是psql 中的错误吗?我知道没有其他程序会发生这种情况。
  • 大多数其他程序都能正确捕获信号并进行清理。 Python 似乎也这样做了……

标签: bash postgresql shell terminal psql


【解决方案1】:

reset 经常有效,但不是灵丹妙药。对于这种情况,只有终端回显被禁用。其他程序可能会修改回车的处理,使键入“reset”变得很尴尬(您可以这样做,但必须键入 controlJ 来结束行) .

在其他情况下,因为reset 依赖于终端描述,它可能不会重置所有内容。特别的问题是 (a) 替代字符集和 (b) 终端调色板的更改。

  • 虽然ncurses 有许多终端描述重置备用字符集,但在 Unix 系统上这样做是一个常见问题。
  • 在过去几年中,人们一直在使用 xterm 256color 序列来设置调色板,但 reset 无法将它们恢复为默认调色板。

除了终端描述部分,reset 执行类似于stty sane 的功能。

【讨论】:

    猜你喜欢
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 2015-04-24
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多