Клавиши со стрелками, 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, чтобы просмотреть свою историю.