Arrow keys, Home, End, tab-complete keys not working in shell
I have installed ubuntu minimal(mini.iso) on my vm. I then used recovery mode to login as root and create an account with useradd -m admin and then set a password with passwd admin . When I login on the new account, instead of the normal prompt I only see a $ sign. If I try to tab-complete a command or file name it prints a normal tab. If I try to use the arrow keys it prints ^[[A , ^[[B , ^[[C or ^[[D . Also, ls no longer adds colors. None of these problems were in recovery mode. How can I fix this?
The $ prompt is for a user. root’s prompt is #. The arrow keys do not work in terminal, you need to type in something like unity to run the Unity shell
@SimplySimon The up and down arrow keys are supposed to switch through previous commands, the left and right arrow keys are supposed to scroll through the current command, and tab should complete the command or file name. The path should be written to the left of the $.
9 Answers 9
That probably means that the new user account was created with /bin/sh as its login shell (which symlinks to the dash shell by default) instead of /bin/bash — you can change a user’s login shell with the ‘chsh’ command
or to change another user’s login shell (need to be root to do this obviously)
(you will need to start a new login session for the change to take effect). You may also need to copy the default .bashrc from /etc/skel to get things like the color prompt and default LS_COLORS .
In future you might want to use the ‘adduser’ command instead of ‘useradd’ — it sets up a more complete user environment including things like a default .profile and .bashrc — as well as setting the login shell to ‘bash’
Клавиши Backspace, Tab, Del и стрелки не работают в терминале (используя ssh)
Когда я захожу на другой компьютер Ubuntu с моей учетной записью (с разрешениями sudo), моя клавиша Backspace генерирует некоторые неудобные символы при нажатии. Также не работают клавиши Tab, Del и Arrow.
С другой стороны, у меня также есть другая учетная запись на той же машине, и когда я ssh через эту учетную запись, его терминал работает отлично. Я не мог понять, почему это происходит.
10 ответов
РЕДАКТИРОВАТЬ: Ссылка: ответ Матенга
Матенг близок к тому, что я думаю, что вы, вероятно, управляете Bourne Shell. Но вы не должны редактировать свой /etc/passwd файл напрямую. Попробуйте использовать chsh команда вместо:
Флаг -s сделает новую оболочку (в данном случае Bash) вашей оболочкой для входа в систему.
При первом входе в ssh попробуйте эти две команды
stty sane export TERM=linux
Я должен сделать это на некоторых машинах, которые я вхожу, чтобы решить именно эту проблему
Следующие изменения решили проблему для меня. Сначала я проверил, какая оболочка запущена:
Как я читал в этом посте в Ubuntuforums, изменение оболочки на /bin/bash приносит решение. Поэтому я отредактировал свои настройки пользователя в /etc/passwd чтобы:
johndoe:x:1001:104:John Doe:/home/johndoe:/bin/bash
Я вышел из системы, затем снова вошел в систему. Странно, мне пришлось переключать оболочку вручную (возможно, какой-то кэш был активен), введя это:
Вуаля!
[Проблема возникла из-за обновления дистрибутива.]
Один из самых простых способов решить эту проблему — набрать / bin / bash в командной строке интерфейса:
Вышеупомянутая команда выполнит Оболочку Bourne Again поверх существующей оболочки как подпроцесс. Это представляет собой недостаток использования большего количества ресурсов, но ничего не нужно редактировать и никаких специальных разрешений не требуется. Например, в последних версиях Kubuntu он запускает сеанс / bin / bash поверх интерфейса командной строки по умолчанию / bin / dash.
Однако, чтобы сохранить изменения, можно отредактировать файл /etc/passwd и добавить / отредактировать / заменить оболочку по умолчанию в / bin / bash после последнего символа «:» в строке, соответствующей пользователю. Однако для редактирования этого файла потребуются права администратора.
Я перепробовал все вышеизложенные плюсовые заметки от (по этой ссылке) безуспешно. Вы можете проверить, установлен ли vim.
Я обычно использую vi, а не vim. Поэтому я установил vim.
После этого нажатия клавиш начали работать правильно, когда я выполнил vi. Глядя на вывод следующего, похоже, что vi был сделан псевдонимом vim после установки:
$ ls -al /etc/alternatives | grep vi lrwxrwxrwx 1 root root 18 Jan 13 09:38 vi -> /usr/bin/vim.basic
От имени пользователя root отредактируйте файл /etc/passwd для своего пользователя и измените с /bin/sh на / bin / bash
hdfs: x: 1020: 1001:: / home / hdfs: /bin/sh to hdfs: x: 1020: 1001:: / home / hdfs: / bin / bash
«Терминал Gbnome» точно не эмулирует «xterm».
Терминал GNOME эмулирует эмулятор терминала xterm и предоставляет некоторые из тех же функций.
Трактат о проблеме и ее решениях можно найти здесь:
Каждый пользователь Linux рано или поздно оказался в ловушке в ситуации, когда рабочие клавиши Backspace и Delete на консоли и на X казались невозможными. Эта статья объясняет, почему это происходит, и предлагает решения. Представленные здесь понятия по существу не зависят от дистрибутива: из-за разного содержания файлов конфигурации системы в каждом дистрибутиве я постараюсь дать читателю достаточно знаний, чтобы при необходимости продумать свои собственные исправления.
Я предполагаю, что клавиша Backspace должна вернуться на один символ назад, а затем стереть символ под курсором. С другой стороны, клавиша Delete должна удалять символ под курсором, не перемещая его. Если вы считаете, что необходимо заменить функцию двух клавиш, несмотря на то, что на большинстве клавиатур имеется клавиша Backspace со стрелкой, указывающей влево (←), то этот документ не даст вам немедленных решений, но, безусловно, вы может найти объяснения, приведенные здесь полезными.
Самое простое решение (которое может работать здесь) — использовать: bash $ export TERM = gnome
Ни один из приведенных выше ответов не устранил мою идентичную проблему, то есть не может использовать клавишу Backspace или аналогичные ключи после sshing на удаленный компьютер из Ubuntu (здесь ubuntu-17.10 с ncurses-6.0).
Это в конечном итоге проблема с terminfo. По сути, мой gnome-терминал говорит, что это терминал xterm-256color (через переменную TERM, который экспортируется с помощью ssh на удаленный компьютер), но на удаленном компьютере не было конфигурации terminfo для xterm-256color.
Выполнение следующих действий решило проблему:
$ host: echo $ TERM Xterm-256-цветные $ host: infocmp> terminfo.src $ host: tic terminfo.src $ host: scp.terminfo / x / xterm-256color $ remote: / usr / share / terminfo / x / xterm-256color
infocmp без какой-либо опции создает листинг источника для терминала в переменной окружения $TERM. Так что это эквивалентно infocmp -I $TERM.
Затем полученный источник компилируется через тик.
Наконец, установите соответствующую конфигурацию terminfo в удаленном месте. Итак, в следующий раз, когда я подключусь к $ remote через $ host, он узнает о моем терминале.
Если вы добавлены в качестве другого нового пользователя, используйте следующую команду, которая добавит вас в sudo группа. Это должно быть сделано с использованием основной учетной записи пользователя, у которой есть разрешение на использование sudo .
$ sudo adduser username sudo $ sudo adduser username admin
Это проблема совместимости с клавиатурой, т. Е. Как она интерпретируется в хост-системе. Возможно, вам придется использовать j или h для перемещения в редакторе vi в командном режиме. Стрелки не будут работать.
Проверьте настройки профиля -> совместимость в хост-системе для этого конкретного пользователя.
Хорошо, я знаю, что это не «решение», скажем так, и это может не помочь многим из вас, но, надеюсь, это поможет по крайней мере 1 из вас. Это решило мою проблему.
Мой шестимесячный ребенок стучал по моей клавиатуре, и мои клавиши со стрелками перестали работать на моей сессии замазки в коробку Debian. Они работали везде (все остальные программы, кроме шпатлевки). После Google и даже посадки здесь (я собирался закрыть эту вкладку, это не решило это для меня). Я попробовал что-то. Я открыл новый сеанс SSH в том же окне, и мои клавиши со стрелками работали. Я присоединился к своему сеансу экрана, и они не работали. Так что что-то произошло, привязанное к текущей сессии экрана, отключив клавиши со стрелками. К сожалению, я был (я) в середине большого проекта, у меня было открыто 28 окон в сеансе экрана, и я не хотел закрывать сеанс, теряя свое место во всех 28 окнах.
Находясь в оболочке bash, я попробовал все возможные комбинации: CTRL + вверх, вниз, влево, вправо, ALT + вверх, вниз, влево, вправо, SHIFT + вверх, вниз, влево вправо, CTRL+ALT+ вверх, вниз, влево вправо, CTRL+SHIFT+ вверх, вниз, влево, вправо и т. д. Тем не менее, безуспешно, я также попробовал меню Windows и клавиши приложения Windows вверх, вниз, влево вправо.
Теперь мои стрелки снова работают! Что-то в одной из комбинаций того, что было выше, и клавиши со стрелками исправили это.
Не работает backspace, стрелки, delete и другие клавиши в терминалах по SSH
Такая проблема — подключаюсь из винды разными ssh клиентами к серверу — а там не работают клавиши backspace, стрелки, delete и другие.
Точнее они срабатывают но выводится на экран при этом фигня.
Подключаюсь из debian wheezy первым попавшимся клиентом к серверу — а там работают клавиши backspace, стрелки, delete и другие.
На экран никакой фигни не выводится.
А вообще тип терминала настрой.
сейчас из убунты попробовал на eclipse (RSE) — такая-же фигня
сейчас еще попробовал к другому серваку подключиться — все работает нормально. Значит дело в настройках на сервере (ubuntu 12.04).
все нормально работает на debian 5
Кодировка сервера и клиента под windows не совпадают? utf-8
Какая именно фигня вылазит? Если ESC последовательности, то либо на стороне сервера неверно настроен терминал либо твой клиент их не распознаёт (они эхом возвращаются).
где посмотреть, не подскажете?
на сервере установлен webmin
и еще — в обычном терминале убунты — такая-же фигня 🙁 короче везде
Neokortex ★ ( 05.02.13 23:28:53 MSK )
Последнее исправление: Neokortex 05.02.13 23:29:47 MSK (всего исправлений: 1)
Подсказал бы, но это зависит от того:
И в настройках твоего клиента.
на сервере: LANG=en_US.UTF-8 LANGUAGE=en_US: LC_CTYPE=«en_US.UTF-8» LC_NUMERIC=«en_US.UTF-8» LC_TIME=«en_US.UTF-8» LC_COLLATE=«en_US.UTF-8» LC_MONETARY=«en_US.UTF-8» LC_MESSAGES=«en_US.UTF-8» LC_PAPER=«en_US.UTF-8» LC_NAME=«en_US.UTF-8» LC_ADDRESS=«en_US.UTF-8» LC_TELEPHONE=«en_US.UTF-8» LC_MEASUREMENT=«en_US.UTF-8» LC_IDENTIFICATION=«en_US.UTF-8» LC_ALL=
на клиенте: LANG=ru_RU.UTF-8 LANGUAGE= LC_CTYPE=«ru_RU.UTF-8» LC_NUMERIC=«ru_RU.UTF-8» LC_TIME=«ru_RU.UTF-8» LC_COLLATE=«ru_RU.UTF-8» LC_MONETARY=«ru_RU.UTF-8» LC_MESSAGES=«ru_RU.UTF-8» LC_PAPER=«ru_RU.UTF-8» LC_NAME=«ru_RU.UTF-8» LC_ADDRESS=«ru_RU.UTF-8» LC_TELEPHONE=«ru_RU.UTF-8» LC_MEASUREMENT=«ru_RU.UTF-8» LC_IDENTIFICATION=«ru_RU.UTF-8» LC_ALL=
$ sudo locale-gen ru_RU.UTF-8
$ sudo update-locale LANG=ru_RU.UTF-8
*** update-locale: Warning: LANGUAGE («en_US:») is not compatible with LANG (ru_RU.UTF-8). Disabling it.
А как его Disabling я не знаю 🙁
sudo dpkg-reconfigure locales
теерь работает backspace, а вот стрелка вверх не работает.
Поставил себе ради интереса эту RSE — коннектится, клавиши работают, а вот юникод нет. И кириллица тоже.
Но я думаю это из-за убогости терминала. В описании было написано vt102 compatible. Так что стоило этого ожидать.
Даже mc пашет. Правда рамки все иероглифами, но кнопки работают. На TERM пишет просто ansi.
А не — нашел, где utf включается. Всё оказалось просто: при отключенной сессии зайти в вид Team и выбрать Свойства. Там будет список (маленький) кодировок. Теперь показывает русские буквы и рамки в mc. Ввод не работает.