Как решить проблему, когда текст на экране nano искажается при использовании su - admin

Как решить проблему, когда текст на экране nano искажается при использовании su - admin

В Терминале я su - adminнахожусь в своей учетной записи пользователя brew update, чтобы изменять .bashrcи т. д.

Я заметил, что когда в моей пользовательской сессии изменение размера окна во время работы nanoвообще не искажает текст. Окно отлично меняет размер.

Однако после открытия нового окна Терминала, запуска su - adminи nanoпопытки изменить размер — текст искажается, и восстановить его невозможно. control-lЭто не работает.

Когда я вхожу в учетную запись администратора, открываю Терминал и запускаю, nanoпроблем с изменением размера окна не возникает — текст не искажается.

Та же проблема происходит и в обратном порядке. Из моей учетной записи администратора использование su - userи запуск nanoи изменение размера приведет к тому, что текст будет искажаться.

Есть идеи, что здесь происходит и как решить эту проблему?

Я использую нано 4.9

решение1

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

^L

Который

ctrl + L

Если по какой-то причине буфер будет поврежден, вам придется нажать на него пару раз.

решение2

Эмулятор терминала отправит сигнал Window Change (SIGWINCH) оболочке, которая была запущена вместе с эмулятором терминала. Оболочка должна передать его своим дочерним элементам, но когда вы перейдете в другую учетную запись пользователя (используя suили иным образом), она не сможет подать сигнал этой оболочке, поскольку она запущена как другой пользователь. Поэтому suоболочка 'd и все программы, запущенные из нее, продолжат использовать старый размер окна, не обращая внимания на тот факт, что реальный размер окна изменился.

Чтобы полностью обновить suсеанс для использования нового размера окна, вам нужно будет запустить eval $(resize)эту оболочку. Она обновит как переменные среды COLUMNS и LINES (именно поэтому evalона нужна), так и настройки терминала (эквивалентные командам stty rowsи stty columns). Во многих случаях может быть достаточно просто resizeбез этой eval...части, но некоторым программам могут понадобиться и переменные среды.

решение3

Использование loginOS X является обходным решением этой проблемы.


$ login
логин: your username
пароль: your password
Последний вход: День Месяц Дата ЧЧ:ММ:СС на ttys000
$ whoami
ваше имя пользователя

Спасибо пользователюгргнаApple Stack Exchange

Связанный контент