Автозаполнение не работает при входе в систему как root
Я только что столкнулся с чем-то, что действительно беспокоит меня. Автозаполнение в Ubuntu работает как чудо, но когда я вхожу в систему как root, например su
я получил tab
автозаполнение только иногда.
Почему это так работает? Можно ли это изменить?
5 ответов
Проверьте свои /root/.bashrc
файл для этих строк
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
Если они не существуют, добавьте их в конец файла, используя ваш любимый текстовый редактор.
Вы не упомянули, какую версию Ubuntu вы используете.
Проверьте, есть ли у вас
bash-completion
пакет установлен:sudo apt-get install bash-completion
Мой работает, если я авторизуюсь используя:
sudo -i
Для Ubuntu 13.10 проверьте /etc/bash.bashrc
за
# enable bash completion in interactive shells
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
Они могут быть прокомментированы. Без комментариев их работает.
В Linux Mint 18 (на основе Xenial) вы должны отредактировать ваш bashrc:
sudo nano /etc/bash.bashrc
и закомментировать (удалить #
перед каждой строкой) этот раздел:
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
Это все.
Обнаружил, что это работает (похоже на ответы выше, но с изюминкой)
Файл, который нужно отредактировать (по крайней мере, в моем случае с 12.04), был /root/.bashrc. Это имеет смысл в моем случае, учитывая, что мой обычный пользователь просто отлично выполнял автозаполнение, но мой root не был.
В любом случае в указанном файле я нашел весь необходимый код, но он был закомментирован:
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
#. /etc/bash_completion
#fi
Просто оставил комментарий:
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
Сохранено, и все заработало просто отлично.
Надеюсь, это кому-нибудь поможет.