LC_CTYPE 破坏自动完成:此问题的原因是什么?

LC_CTYPE 破坏自动完成:此问题的原因是什么?

今天出于某种原因,每次我在终端中点击选项卡时,都会显示以下内容:

cat bash: warning: setlocale: LC_CTYPE: cannot change locale (en_CA)

Display all 150 possibilities? (y or n)

当我键入然后按 TAB 键时,就会发生这种特殊情况cat。我从未改变过任何设置或任何东西。有人知道发生了什么事吗?

答案1

我有预感,你的 bash_completion 导致了这种情况的发生。尝试通过执行以下操作暂时清除 bash 完成(直到退出):

complete -r

如果清除了它,那么它是 bash 完成的东西,如果没有,它仍然可能是 bash 内置函数之一

答案2

通过 SSH 连接到远程服务器时,我遇到了类似的问题(在本地安装了 oh-my-zsh 后,但我不确定这是否相关)。

为了解决这个问题,我在本地计算机上编辑了该/etc/ssh/ssh_config文件,注释掉了 SendEnv 行。

#SendEnv LANG LC_*

现在,选项卡补全功能可以在远程计算机上正常运行而不会发出警告。

bash:警告:setlocale:LC_CTYPE:无法更改区域设置

答案3

我在我的 ubuntu 服务器(FlexiScale)上遇到了类似的问题,并搜索了一段时间的解决方案,但找不到任何合适的东西......仍然不确定我所做的是否是“正确的方法”,但它似乎有效。

我看到的警告是:

bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)

为了确保语言环境是最新的,我这样做了(不确定这是否有必要):

# locale-gen --purge

locale我的系统上显示的LC_CTYPE="UTF-8"内容对我来说不合适,所以我将其更改/etc/default/locale为如下所示:

LANG="en_GB.UTF-8"
LC_CTYPE="en_GB.UTF-8"

(我添加了第二行。)重新登录后,警告消失了。

答案4

我也遇到了同样的问题。我在这里尝试了一些解决方案,但是当我尝试运行时locale-gen,我的系统说找不到该命令。事实证明,这是locales我没有安装的软件包的一部分。所以我安装了它,运行了locales-gen,现在它可以工作了!

相关内容