Je n'arrive pas à faire en sorte que tout fonctionne avec Ubuntu. Ce devrait être une réponse simple. Peut-être que quelqu'un pourra m'aider. Tout ce que j'essaie de faire est de faire en sorte que les sudoers utilisent leur propre fichier d’historique, mais si je mets la variable history dans le fichier .bashrc
pour root, avec:
HISTFILE="/root/.bash_history.$Sudo_USER"
rien ne semble arriver.
J'ai essayé de changer le /root/.bashrc
et /etc/skel/.bashrc
avec l'entrée ci-dessus. Rien. J’ai déjà eu à travailler avec CentOS (voir oblige les sudoers à utiliser leur propre fichier d’historique ).
J'ai même déplacé l'entrée au début du fichier, car j'ai trouvé quelques suggestions selon lesquelles elle pourrait être ignorée après un certain point, mais quel que soit le poste choisi, les fichiers d'historique ne sont pas créés. Si j'utilise ma touche fléchée mais les entrées d'historique sont là ... d'où qu'elles viennent, je n'en ai plus la moindre idée, cela semble être une sorte de magie, Voodoo semble-t-il.
Toute aide serait appréciée.
Je viens de suivre ce que vous avez décrit, accompagné de quelques expériences
~$ Sudo -s
~# ls -l $HISTFILE
-rw------- 1 g g 44174 Jan 4 16:26 /home/g/.bash_history
~$ Sudo -i
~# ls -l $HISTFILE
-rw------- 1 root root 2356 Jan 4 16:23 /root/.bash_history
~$ Sudo ls -l $HISTFILE
-rw------- 1 g g 44174 Jan 4 16:26 /home/g/.bash_history
Ainsi, lorsque nous exécutons des commandes Sudo
standard o lorsque nous utilisons Sudo -s
pour obtenir un shell racine, nous utilisons déjà notre propre fichier d'historique.
Ce n'est que lorsque nous appelons Sudo -i
pour obtenir un nom de connexion approprié que Shell utilise l'historique de la racine d'origine.
Maintenant, j'ai suivi votre exemple et modifié /root/.bashrc
pour contenir
HISTFILE="/root/.bash_history.$Sudo_USER"
en première ligne.
La répétition des expériences ci-dessus avec Sudo -s
et Sudo ls -l $HISTFILE
a donné les mêmes résultats que précédemment (comme prévu). Mais Sudo -i
m'a donné un shell sans historique (ni fichier d'historique non plus).
Après avoir exécuté
~$ Sudo -i
~# ls -l .bash_history*
-rw------- 1 root root 2412 Jan 4 17:16 .bash_history
~# echo $HISTFILE
/root/.bash_history.g
~# ls -l $HISTFILE
ls: cannot access '/root/.bash_history.g': No such file or directory
et se déconnecter
~$ Sudo -i
~# ls -l .bash_history*
-rw------- 1 root root 2412 Jan 4 17:16 .bash_history
-rw------- 1 root root 52 Jan 4 17:25 .bash_history.g
J'obtiens les résultats escomptés (y compris l'accès à "mon" historique en utilisant les touches fléchées).
N'oubliez pas que le contenu de /root/.bashrc
ne concerne que exécuté pour un shell interactif sans login (comme Sudo -s
), pour un login-shell (comme Sudo -i
) /root/.bashrc
est seulement source, et seulement si /root/.profile
contient quelque chose comme
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi