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


12

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

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

Display all 150 possibilities? (y or n)

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


en_CA(即加拿大英语),你预计将在一个区域?
吉尔(Gilles)'所以

2
您可以发布locale命令的输出吗?
penguin359

2
您确定这en_CA是一个有效的语言环境(也就是说,它既存在于您的系统上,又是由localedef或类似的语言环境生成工具生成的)?

如果您想获得正确的答案,请回答@ penguin359的问题,并告诉您如何在系统上进行连接(直接在控制台上或使用sshputty
dan

Answers:


5

我有一种预感,就是您的bash_completion引起了这种情况。尝试通过以下方式临时清除bash的完成(直到退出):

complete -r

如果可以清除它,则说明bash已完成,否则,它可能仍是bash内置的一种


最后尝试了此解决方案,因为其他解决方案似乎更适合解决了一个已存在很长时间的问题,但这是行之有效的。
Unfun Cat 2013年

5

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

在本地计算机上,我编辑了/ etc / ssh / ssh_config文件,并注释了SendEnv行

#SendEnv LANG LC_*

选项卡补全现在可以正常工作,而不会在远程计算机上发出警告

bash:警告:setlocale:LC_CTYPE:无法更改语言环境


4

我在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"

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


3
固定LC_CTYPE为有效值即可。您不需要LANG(事实上​​,我建议您反对)。您可以通过运行在系统上查看有效的语言环境名称locale -a。在Ubuntu上,运行sudo localegen xx_YY以生成xx_YY语言环境(假定可以生成)。
吉尔斯(Gilles)'所以

1

如果在按Tab键进行bash命令自动完成时收到类似于此的错误/警告消息:

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

解决方法是:

  1. 安装所需的语言环境。就我而言,这是“ id”:

    sudo apt-get install language-pack-id
  2. 重新配置语言环境:

    sudo dpkg-reconfigure locales

现在,bash Tab完成应该可以正常工作。:-)

来源:http : //ubuntucomputing.blogspot.com/2011/12/how-to-fix-error-bash-warning-setlocale.html


0

我遇到了同样的问题。我在这里尝试了一些解决方案,但是当我尝试运行时locale-gen,系统说找不到命令。原来,这locales是我尚未安装的软件包的一部分。所以我安装了它,然后运行了locales-gen,现在可以使用了!


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.