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(тобто англійською мовою Канади) місце, в якому ви очікуєте перебувати?
Жил "ТАК - перестань бути злим"

2
Ви можете опублікувати вихід localeкоманди?
пінгвін359

2
Ви впевнені, що en_CAце дійсна локаль (тобто, що вона обидві існує у вашій системі та створена іншим localedefабо подібним інструментом генерації локалів)?

Якщо ви хочете отримати правильну відповідь, будь ласка, дайте відповідь на питання від @ penguin359 та скажіть, як ви підключені у вашій системі (безпосередньо на консолі чи віддалено за допомогою sshабо putty.
дан

Відповіді:


5

Я маю на думку про те, що щось з вашого bash_completion викликає це. Спробуйте тимчасово очистити ваше завершення на баш (до моменту виходу), виконавши:

complete -r

Якщо це очищає це, то це щось із завершенням bash, якщо не, це все ще може бути одним із вбудованих bash


Останнє спробував це рішення, тому що інші видалися більш підходящим рішенням проблеми, яка зберігалася протягом століть, але це спрацювало.
The Unfun Cat

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локаль (припускаючи, що його можна генерувати).
Жил "ТАК - перестань бути злим"

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, і тепер він працює!


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.