1

Попытка понять функциональность bash_history:

/home/user# ls -a
.  ..  .bash_history  .bash_logout  .bashrc  .cache  .profile  pylabs  .viminfo  .Xauthority

Я вижу файл .bash_history папке /home/user . Но почему у него нет всей истории выполненных команд, выводимой ниже?

/home/user# cat .bash_history

su
/home/user#

Но та же история доступна в файле .bash_history в папке /root .

 # ls -a
 .  ..  .bash_history  .bashrc  .cache  .profile  .ssh  .viminfo

/home/user# cd /root/
# cat .bash_history

bash script.sh
ls
cd pylabs/
ls
...
...
ls -a
cat .bash_history
cd /root/
#

Вопрос 2: Будет ли .bash_history доступен только в некоторых конкретных папках, и как он хранит все команды, выполняемые в разных каталогах?

/home/user/pylabs# ls -a
.  ..  backup  bkupscript.py  mybackup.py  __pycache__  solution.py

2 ответа2

2

История для каждого пользователя, а не глобальная. Каждый пользователь имеет свой собственный файл истории, а команды каждого пользователя хранятся в своем собственном файле. Расположение файла истории bash по умолчанию - $HOME/.bash_history , поэтому это будет /home/user/.bash_history для пользователя "user" и /root/.bash_history для "root" пользователя. Вы можете изменить имя / местоположение файла истории, установив переменную среды HISTFILE на что-то другое.

Теперь, в примере, который вы показываете, вы сделали следующее:

  1. Войдите в систему как "пользователь" и сразу же переключитесь на root с помощью su . Это означает, что вы выполнили ровно одну команду как "пользователь", и поэтому в файле истории "пользователя" есть только одна запись: su .

  2. От имени пользователя root вы выполняли различные команды, и все они хранятся в файле истории root, поскольку они запускались пользователем root. Обратите внимание, что файл истории root не содержит команду su так как она была запущена пользователем, а не пользователем root.

Таким образом, в файле $HOME/.bash_history хранятся все команды, выполняемые пользователем, независимо от того, в каком каталоге они выполнялись. Однако, поскольку каждый пользователь имеет свой собственный файл, команды, запускаемые пользователем root, не сохраняются в том же файле, что и команды, запускаемые пользователем.

1

Bash хранит историю в файле, который вы нашли, но работающие оболочки также будут иметь историю в памяти, которая еще не была сохранена. Используйте history -w для записи вашей текущей истории в файл.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .