Я просто не могу заставить его работать в Ubuntu, это должен быть простой ответ, может быть, кто-то может мне помочь. Все, что я пытаюсь сделать, - это заставить sudoers использовать свой собственный файл истории, но если я установлю историю var в .bashrc
корне for с помощью:
HISTFILE="/root/.bash_history.$SUDO_USER"
кажется, ничего не происходит.
Я попытался изменить /root/.bashrc
и /etc/skel/.bashrc
с вышеупомянутой записью. Ничего. Я получил это для работы в CentOS раньше (см. Сделать, чтобы sudoers использовать свой собственный файл истории ).
Я даже переместил запись в начало файла, так как нашел некоторые предложения, в которых говорилось, что она может игнорироваться после определенного момента, но независимо от позиции файлы истории не создаются. Если я использую свою клавишу со стрелкой, однако записи истории там ... откуда они берутся, я больше не имею понятия, это похоже на какую-то магию, кажется, Вуду.
Любая помощь будет оценена.
источник
sudo -i
? Чтоecho $HISTFILE
дает, когда вы находитесь на сессии sudo?dash
не должен вступать в игру здесь - он используется только как заменаbash
при вызове как/bin/sh
. Интерактивные оболочки не подвержены влиянию.Ответы:
Я просто следовал тому, что вы описали, в сопровождении нескольких экспериментов
Поэтому, когда мы выполняем стандартные
sudo
команды или когда мы используем,sudo -s
чтобы получить корневую оболочку, мы уже используем наш собственный файл истории.Только когда мы вызываем
sudo -i
для получения правильной оболочки входа в систему, используется оригинальная история корня.Теперь я последовал вашему примеру и отредактировал,
/root/.bashrc
чтобы содержатькак первая строка
Повторение вышеописанных экспериментов с
sudo -s
иsudo ls -l $HISTFILE
дали те же результаты , как и раньше (как ожидалось). Ноsudo -i
дал мне оболочку без истории (и без файла истории).После выполнения
и выход
Я получаю ожидаемые результаты (включая доступ к «моей» истории с помощью клавиш со стрелками).
Имейте в виду , что содержимое
/root/.bashrc
только выполняется для интерактивного нерегистрированной оболочки (какsudo -s
), для входа в скорлупе (какsudo -i
)/root/.bashrc
только источников , и только тогда , когда/root/.profile
есть что - то вродеисточник
sudo ls -l $HISTFILE
на самом деле не имеет смысла, потому что $ HISTFILE будет развернут до фактического запуска команды.