"-bash: warning: setlocale: LC_ALL: не может изменить локаль (en_US.UTF-8)"

Запуск нового Ubuntu 16.04 и сервера Debian 8. Попытка подключиться через ssh и получить следующий странный вывод терминала. Я имею в виду прямоугольники с номерами в нем.

Проблема с языковыми настройками была введена мной, пытаясь решить только что упомянутую проблему, так как я предполагал, что некоторые проблемы с кодированием несут ответственность. После 3-х отладки мне нужна ваша помощь!

Может быть, это просто недостающая библиотека? Это трудно искать такие графические проблемы …

введите описание изображения здесь

local@local:~$ ssh dummy@server The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sat Jul 9 17:22:43 2016 from x590c3909.dyn.telefonica.de -bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) -bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) -bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) ]1337;RemoteHost=dummy@server]1337;CurrentDir=/home/patrick]1337;ShellIntegrationVersion=2;shell=bash]133;C;]133;D;0]1337;RemoteHost=dummy@server]1337;CurrentDir=/home/patrick]133;Adummy@server:~$ ]133;B 

выход echo $ PS1:

 echo $PS1 ]133;C;\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ 

echo $ TERM output:

 echo $TERM ]133;C;xterm 

Изменить: «locale» – предупреждение, зафиксированное этим ответом .

One Solution collect form web for “"-bash: warning: setlocale: LC_ALL: не может изменить локаль (en_US.UTF-8)"”

Что делает ваш терминал

«Прямоугольники с номерами в [их]» – это то, как ваш эмулятор терминала отображает вам контрольную последовательность терминала, потому что он не распознает эту последовательность. В частности:

  • Существует управляющий символ ECMA-48 (в группе C1 для технического) с названием Операционная система Command , сокращенно OSC. Он имеет значение Unicode U + 009D.
  • ECMA-48 определяет механизм, в котором символы в группе C1, которые требуют полностью чистого 8-битного пути передачи для передачи, могут быть представлены управляющей последовательностью, которая использует только символы со значениями, меньшими, чем U + 0080 (128) , Эти 7-разрядные псевдонимы позволяют использовать управляющие символы C1 на путях передачи, которые не являются 8-битными. По иронии судьбы, мир был в значительной степени 8-битным чистым на протяжении десятилетий.

    Вы, скорее всего, знаете один из этих 7-разрядных псевдонимов, который очень распространен: ESC [ вместо управляющего символа CSI (U + 009B). Управляющий символ OSC имеет ESC ] как 7-разрядный псевдоним.

  • Что-то в дальнем конце вашего соединения SSH ожидает, что ваш терминал поймет контрольные последовательности, которые начинаются с OSC. Он передает их с использованием 7-разрядного псевдонима.
  • Ваш терминал не полностью выполняет ECMA-48. Он видит ESC ] и просто рассматривает его как символ ESC, за которым следует символ ] . И это то, что он печатает.
  • Но у этого символа ESC нет символа. Таким образом, он возвращается к традиционному трюку отображения символов, в котором у него нет глифа в качестве поля с шестнадцатеричным значением (младшие 16 бит) кода Unicode в нем. Если вы посмотрите внимательно, вы увидите цифры 00 и 1B в поле, для U + 001B, кодовую точку символа ESC.
  • Он также неправильно рассматривает «интервал» того, что он напечатал для ESC, т. Е. Пространство, которое он занимает на экране, что фактически составляет две ширины символов. Поэтому после печати коробки он не продвигает выходное положение достаточно . Затем он печатает ] над верхней частью правой половины окна, как вы можете видеть.

Почему это было сказано сделать это

Несколько терминальных эмуляторов распознают OSC как интродуктор последовательности символов управления. Для него стандартная форма. ECMA-48 § 5.6 определяет «управляющие строки», начатые с OSC, и заканчивается ST (U + 009C, String Terminator ). То, что находится в контрольной строке, специфично для терминального типа. Например: вы увидите из своего doco, что xterm реализует такие управляющие строки, для установки шрифтов и заголовков окон.

Однако форма управляющей последовательности в этом случае не является формой xterm. Скорее, это

  ␛] 1337; CurrentDir = / дом / patrick␇ 

Это форма для управляющих последовательностей OSC, которая понимается iTerm2. iTerm2 определяет набор управляющих последовательностей, введенных OSC, которые явно нестандартны и специфичны для iTerm2. Они не придерживаются спецификации контрольной строки ECMA-48, но прекращают контрольную строку с BEL (U + 0007), а не с ST, как говорится в стандарте. Строго говоря, это строка управления, которая никогда не прерывается , поскольку любые символы, отличные от SOS и ST, допускаются в содержимом строки управления; и тот, который с соответствующим эмулятором терминала эффективно останавливает отображение, поскольку терминал просто набирает все последующие выходные данные в качестве контрольной строки.

(Терминальный эмулятор, встроенный в ядро ​​Linux, также не реализует стандартные управляющие строки OSC. Xterm doco отмечает, что у него есть корты для поддержки сломанных приложений, которые используют эмулятор терминала с несоответствующим ядром Linux или iTerm2. Форма здесь определенно iTerm2, а не эмулятор ядра ядра Linux, хотя.)

Когда вы используете iTerm2 со своего Macintosh, все, что находится на другом конце SSH-соединения, тихо посылает управляющие последовательности iTerm2 на ваш эмулятор терминала, чтобы рассказать о нем, как о вашей оболочке, о том, что ваш рабочий каталог, кто вы, когда вы начинаете редактирование в командной строке, когда вы начинаете выполнение команды и т. д.

В удаленной системе вы установили тип терминала . Вы заставили его работать в предположении, что вы всегда общаетесь с iTerm2. Но теперь вы разговариваете с ним, используя Terminator, работающий на Ubuntu, другом эмуляторе терминала, который имеет другой набор управляющих последовательностей.

Фактически, вывод даже говорит вам об этом:

  ␛] одна тысяча триста тридцать семь; ShellIntegrationVersion = 2; оболочки = bash␇ 

Вы установили iTerm2 «Интеграция с оболочкой» для оболочки Bourne Again на вашей удаленной системе. Глядя на это, довольно сложно проверить, что iTerm2 на самом деле является терминалом, с которым он разговаривает.

Поэтому отключите / удалите его.

дальнейшее чтение

  • Функции управления кодированными наборами символов . ECMA-48. ECMA International.
  • console_codes . Личные страницы Linux. § 4. 2015 год.
  • Мэтью Фримен, Джордж Нахман и Джеймс А. Розен. Собственные коды Escape . Документация iTerm2.
  • Мэтью Фримен, Джордж Нахман и Джеймс А. Розен. Интеграция оболочек . Документация iTerm2.
  • Dotfile не работает в текущей оболочке, нужен новый
  • Редактирование / удаление уведомления системы CLI
  • Контрольный + L не очищающий экран
  • Можно ли отправлять escape-последовательности цветового кода перед входом в систему?
  • Как я могу отменить запущенный процесс и связать его с новой оболочкой экрана?
  • Почему на выходе моей команды есть пустые строки ?: find ~ / x / y / | shuf> ~ / Desktop / z.txt
  • Perl-скрипт, делать cd на терминале
  • Сценарий информационной системы реального времени с использованием ncurses и диалога
  • Переключение между двумя программами framebuffer
  • Вход фида в / dev / tty для продолжения ssh
  • CentOS 7 добавляет нового пользователя с привилегиями root
  • Interesting Posts

    Быстрый способ создания тестового файла с каждой секундой, представленной в формате YYYY-mm-dd HH: MM: SS

    Давать / var / www файлы доступа к www-данным и моему пользователю?

    драйвера (-D) под wpa_supplicant

    Восстановление потерянного файла в Solaris 5.10

    Как удалить пустые комментарии с помощью sed?

    Возможно ли обновлять измененные времена только без копирования файлов при использовании rsync?

    Автоматическое подключение к любой открытой сети Wi-Fi через командную строку CLI

    Есть ли простой тест на что-либо, напечатанное на stderr в shell / Bash?

    Как я могу отобразить приглашение режима вставки слева при использовании zsh с плагином в режиме vi?

    символические ссылки python (также для себя) в usr / bin

    как связать команды типа «Ctrl + C» с одним ключом (например, «F5»)?

    Где ядро ​​поддерживает конфигурацию последовательного порта?

    Conky на корневом рабочем столе не отображает изменения файла конфигурации

    Не удалось прочитать файл. У меня есть разрешения на чтение

    как полностью пустой видеовыход при загрузке (без регистрации ядра, вывода grub и т. д.)

    Linux и Unix - лучшая ОС в мире.