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

1221
Here_2_learn

Попытка понять функциональность 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 
1

2 ответа на вопрос

2
terdon

История для каждого пользователя, а не глобальная. Каждый пользователь имеет свой собственный файл истории, а команды каждого пользователя хранятся в своем собственном файле. Расположение по умолчанию для файла истории 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, не сохраняются в том же файле, что и команды, запускаемые пользователем ,

0
Zoredache

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

Похожие вопросы