Как работает команда «история»?

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
Here_2_learn
источник

Ответы:

2

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

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

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

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

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

terdon
источник
1

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

Zoredache
источник
И именно так я узнал кое-что логичное, над чем я размышлял при открытии новых терминалов ... почему я не могу взять с собой свои последние записи истории ...
andersoyvind