Назад | Перейти на главную страницу

Перенос строки Server Bash поверх текста и в неправильном месте

Это довольно сложная проблема для объяснения, поскольку при подключении к одному из моих серверов с использованием оболочки bash под любым пользователем перенос строк нарушается и имеет всевозможные проблемы. Один из которых я подробно описываю на скриншотах ниже:

Другие проблемы, с которыми я сталкиваюсь, включают в себя, что nano очень запутался в том, на какой строке или букве я нахожусь, как показано при вводе того же сообщения в nano:

Эти проблемы возникают только при подключении, как я уже упоминал ранее, к одному из моих серверов, на котором работает CentOs. Вы знаете, почему это происходит и что я могу сделать, чтобы это исправить? На других серверах сообщение работает нормально!

Спасибо за ваше время,


Вывод запрошенных команд:

Сервер, который не работает должным образом:

Рабочий сервер:


Может быть, это пользовательское приглашение на неработающем сервере? В .bashrc

PS1='\e[1;32m\u@\h\e[m:\e[1;34m\w\e[m$ '

Комментирование этого, похоже, решило проблему.

Google говорит, что ошибки переноса строк могут возникнуть, если вы не соблюдаете эти правила

use the \[ escape to begin a sequence of non-printing characters,
and the \] escape to signal the end of such a sequence

Я не уверен, что это вписывается в мою подсказку?

Пользовательское приглашение - это проблема (из ваших комментариев).

PS1='\e[1;32m\u@\h\e[m:\e[1;34m\w\e[m$ '

Это либо отправка управляющей последовательности, которую ваш терминал не понимает, либо она неправильно сформирована.

Вы можете попробовать это,

PS1='\[\e[1;32m\]\u@\h\[\e[m\]:\[\e[1;34m\]\w\[\e[m\]$ '

Я столкнулся с той же проблемой. Я вошел в «Настройки» терминала в Lion (последняя версия OSX 10.7.3), а затем в:

Настройки -> Дополнительно -> «Объявить терминал как»

И выбрал «xterm» вместо оригинального V100.

Задача решена.

(Это потому, что мне нравятся мои пользовательские подсказки и т. Д.)

Это почти наверняка разница во мнениях между вашим эмулятором терминала и работающей системой относительно возможностей терминала. Если, как вы говорите, это происходит только на определенных машинах (или только через SSH), сравните значение TERM переменная среды между рабочей и нерабочей системами и попытаться установить TERM надлежащим образом в системе, которая не работает.

Это может не сработать, в зависимости от возраста terminfo база данных находится в системе, которая не работает; возможно, вам потребуется обновить эту систему или, по крайней мере, найти другую TERM значение, которое работает для вас и о котором знает удаленная система.