Клавиши со стрелками, Home, End, Tab-Complete не работают в оболочке
Я установил Ubuntu Minimal(Mini.ISO) на мой виртуальный компьютер. Затем я использовал режим восстановления, чтобы войти в систему как root и создать учетную запись с useradd -m admin а затем установить пароль с passwd admin,
Когда я вхожу в новую учетную запись, вместо обычной подсказки я вижу только $ знак. Если я пытаюсь завершить табуляцию команды или имени файла, она печатает обычную вкладку. Если я пытаюсь использовать клавиши со стрелками, он печатает ^[[A, ^[[B, ^[[C или же ^[[D, Также, ls больше не добавляет цвета.
Ни одна из этих проблем не была в режиме восстановления. Как я могу это исправить?
9 ответов
Это, вероятно, означает, что новая учетная запись пользователя была создана с / bin / sh в качестве оболочки входа в систему (которая по умолчанию является символической ссылкой на оболочку dash) вместо /bin/bash - вы можете изменить оболочку входа пользователя с помощью команды 'chsh'
sudo chsh -s /bin/bash <username>
(чтобы изменения вступили в силу, вам необходимо выйти из системы и снова войти в нее). Вам также может понадобиться скопировать файл по умолчанию.bashrc из /etc/skel, чтобы получить подсказку цвета.
В будущем вы можете захотеть использовать команду 'adduser' вместо 'useradd' - она устанавливает более полную пользовательскую среду, включая такие вещи, как.profile и.bashrc по умолчанию, а также устанавливает оболочку входа в систему 'bash'
Мне не удалось использовать завершение табуляции при подключении через VNC к безголовому XFCE4. Ответ, указанный здесь, не сработал, но это сработало:
Изменить сочетания клавиш в файле XML:
sudo nano ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
Найти:
<property name="<Super>Tab" type="string" value="switch_window_key"/>
Измените это на:
<property name="<Super>Tab" type="empty"/>
Выйдите из системы или перезагрузите компьютер
Я только что установил Vim, и все было решено. Сначала я подумал, что он был установлен в исходной версии Ubuntu, так как я мог использовать команду Vi, но это не так.
sudo apt-get install vim
решил проблему.
sudo sh -c "if [ -e $(which bash) ]; then rm $(which sh) && ln -s $(which bash) /bin/bash; fi"
Моя проблема заключалась в том, что /bin/sh был привязан к /bin/dash.
Вы также можете столкнуться с ошибкой завершения табуляции, если пытаетесь завершить табуляцией имя файла с неправильным (или отсутствующим) суффиксом для команды, с которой он используется при завершении табуляции.
Например, завершение с помощью табуляции не удалось для команды+файла:totem ~/Videos/SomefilenameWithNoSuffix, но отлично заработало после того, как я переименовал .mkv в ~/Videos/SomefilenameWithNoSuffix.mkv.
Если все остальное работает, но только определенные попытки завершения имени файла (автозаполнение) терпят неудачу, возможно, вам не хватает прав для поиска в каталоге, который является компонентом пути.
Предположим, вы хотите получить список для какого-то другого пользователя.
.bash_profileфайл. Следующая команда будет работать; потому что запускает команду с необходимым разрешением.
$ sudo ls -al /home/someone_else/.bash_profile
Однако, если вы попытаетесь использовать завершение имени файла, завершение табуляции ничего не даст.
$ sudo ls -al /home/someone_else/.bash_pr<tab> # does not complete
Это потому, что
bashзавершение работает до того, как будет вызвано. Команда также может быть:
$ ls -al /home/someone_else/.bash_pr<tab>
Поскольку разрешение на поиск в этом каталоге отсутствует, завершение команды ничего не делает.
Чтобы временно запустить с большими разрешениями, вы можете запустить новую оболочку с расширением .
$ sudo bash
The
lsкоманда теперь может быть запущена без
sudoпредикат и автозаполнение работает. (Обратите внимание, что подсказка переключается с
$к
#.)
# ls -al /home/someone_else/.bash_pr<tab>
Просто убедитесь, что вы убили оболочку, когда ваша задача будет завершена; снаряд такой мощности опасен.
# exit
В моем случае это оказалась функция, которую я создал в своем
.bash-aliasesфайл под названием "тест". Если у вас все еще возникают эти ошибки, просмотрите свои пользовательские псевдонимы в
.bashrc,
.bash_profile, а также
.bash_aliases, временно удалив все подозрительные дополнения и повторите попытку автозаполнения bash.
Некоторые ответы могут решить эту проблему. Однако, чтобы сделать состояние постоянным , я думаю, вы должны сделать это.
Чтобы проверить текущий терминал, введите это на вашемsshТерминал.
echo $TERM
Если быunknownили что-то странное, вы можете изменить это, выполнив следующие действия:
echo 'export TERM=linux' >> ~/.bash_profile
Вы также можете проверитьbash_profileс использованиемvimили что-то еще:
vim ~/.bash_profile
Это решит все: вставь и нажми. После этого вы сможете выполнить автозаполнение из истории, используя стрелку вверх.
bind '"\e[A": history-search-backward'
Взято с: https://unix.stackexchange.com/questions/5366/command-line-completion-from-command-history Также вы можете использовать Ctrl + R, чтобы просмотреть свою историю.