LC_CTYPE прерывание автозаполнения: что является причиной этой проблемы?

12

По какой-то причине сегодня, каждый раз, когда я нажимаю вкладку в терминале, это появляется:

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

Display all 150 possibilities? (y or n)

Это происходит, когда я печатаю, а catзатем нажимаю TAB. Я никогда не менял никаких настроек или чего-либо еще. Кто-нибудь знает, что происходит?

TAB Weirdness
источник
Является ли en_CA(например, канадский английский) языком, в котором вы ожидаете быть?
Жиль "ТАК - перестань быть злым"
2
Вы можете опубликовать вывод localeкоманды?
penguin359
2
Вы уверены, что en_CAэто допустимая локаль (то есть она существует в вашей системе и была сгенерирована localedefили каким-либо другим подобным инструментом генерации локали)?
Если вы хотите , правильный ответ, пожалуйста , ответьте на вопрос от @ penguin359, и скажите , как вы подключены в вашей системе (непосредственно на консоли или удаленно с помощью sshили putty.
дан

Ответы:

5

У меня есть предчувствие, что что-то ваше bash_completion вызывает это. Попробуйте временно очистить завершение bash (до выхода), выполнив:

complete -r

Если это проясняет ситуацию, то это что-то с завершением bash, если нет, то это может быть одна из встроенных команд bash.

Gekitsuu
источник
Последний раз пробовал это решение, потому что другие казались более подходящим решением проблемы, которая сохранялась веками, но это было то, что сработало.
Несчастный Кот
5

Аналогичная проблема при подключении через SSH к удаленному серверу (после установки oh-my-zsh на моем локальном компьютере, но я не уверен, что это актуально). Исправить это,

На моем локальном компьютере я отредактировал файл / etc / ssh / ssh_config, комментируя строку SendEnv

#SendEnv LANG LC_*

Завершение вкладки теперь работает без предупреждения на удаленной машине

bash: предупреждение: setlocale: LC_CTYPE: невозможно изменить локаль

ACW
источник
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"

(Я добавил вторую строку.) После повторного входа предупреждения исчезли.

inkredibl
источник
3
Исправление, LC_CTYPEчтобы быть действительным значением, сделало это. Вам не нужно LANG(и на самом деле я рекомендую против этого ). Вы можете увидеть действительные имена локалей в вашей системе, запустив locale -a. В Ubuntu запустите sudo localegen xx_YYдля генерации xx_YYлокали (при условии, что она может быть сгенерирована).
Жиль "ТАК - перестань быть злым"
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, и теперь он работает!

user394
источник