![ssh伪终端特殊字符问题](https://linux22.com/image/200218/ssh%E4%BC%AA%E7%BB%88%E7%AB%AF%E7%89%B9%E6%AE%8A%E5%AD%97%E7%AC%A6%E9%97%AE%E9%A2%98.png)
所以我有以下情况:我有一个主机在ssh -t
与 tmux 结合使用时表现出意外的行为。
如果我调用ssh -t my-problem-host tmux
非 ascii 字符(例如€
)将显示为_
。如果我在不调用 tmux 的情况下连接,就没有问题。
比如ssh -t my-problem-host bash
后面手动输入tmux就可以了,而whilessh -t my-problem-host bash tmux
就不行了。
tmux 之外的其他奇怪行为:如果我使用ssh -t my-problem-host vim
并输入特殊字符,我会得到特殊字符和空格。如果我使用ssh -t my-problem-host mc
并键入特殊字符,我会收到两个问题??
。
我也仅在单个主机上遇到此问题,并且想知道导致此问题的原因以及如何解决此问题。本质上ssh -t
似乎引起了问题,主机似乎有一个奇怪的伪终端。
答案1
修复方法是编辑/etc/default/locale
.它包含LANG=C
.我把它改为LANG=en_US.UTF-8
.
如果我在不使用 ssh 的情况下使用 ssh -t
,则为 bash 设置 LANG,但-t
对于其他程序(例如 tmux 或 vim),使用 LANG 时将设置为 C。