
В Терминале я 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
Использование login
OS X является обходным решением этой проблемы.
$ login
логин: your username
пароль: your password
Последний вход: День Месяц Дата ЧЧ:ММ:СС на ttys000
$ whoami
ваше имя пользователя
Спасибо пользователюгргнаApple Stack Exchange