Wie funktioniert der Befehl "history"?

1297
Here_2_learn

Versuch, die Funktionalität von bash_history zu verstehen:

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

Ich sehe eine .bash_historyDatei im /home/userOrdner. Aber warum hat es nicht die gesamte Historie der ausgeführten Befehle, Ausgabe unten?

/home/user# cat .bash_history  su /home/user# 

Die gleiche Historie ist jedoch in der .bash_historyDatei im /rootOrdner verfügbar .

 # 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/ # 

Frage 2: Wird der .bash_historyBefehl nur in bestimmten Ordnern verfügbar sein und wie werden alle in verschiedenen Verzeichnissen ausgeführten Befehle gespeichert?

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

2 Antworten auf die Frage

2
terdon

Die Historie ist pro Benutzer und nicht global. Jeder Benutzer verfügt über eine eigene Verlaufsdatei, und die Befehle jedes Benutzers werden in einer eigenen Datei gespeichert. Der Standardpfad für bash - History - Datei ist $HOME/.bash_history, so wird dies /home/user/.bash_historyfür den Benutzer „user“ und /root/.bash_historyfür den Benutzer „root“. Sie können den Namen / Ort der Verlaufsdatei ändern, indem Sie die HISTFILEUmgebungsvariable auf etwas anderes setzen.

Im folgenden Beispiel haben Sie Folgendes ausgeführt:

  1. Als "Benutzer" angemeldet und mit sofort zu root gewechselt su. Dies bedeutet, dass Sie genau einen Befehl als „user“ liefen, und das ist, warum die History - Datei von „user“ nur einen Eintrag hat: su.

  2. Als root haben Sie verschiedene Befehle ausgeführt, die alle in der History-Datei von root gespeichert sind, da sie von root ausgeführt wurden. Beachten Sie, dass die History-Datei von root den suBefehl nicht enthält, da dieser von "user" und nicht von root ausgeführt wurde.

Die $HOME/.bash_historyDatei speichert also alle von einem Benutzer ausgeführten Befehle, unabhängig davon, in welchem ​​Verzeichnis sie ausgeführt wurden. Da jedoch jeder Benutzer über eine eigene Datei verfügt, werden die von root ausgeführten Befehle nicht in derselben Datei gespeichert wie die von "user" ausgeführten. .

0
Zoredache

Bash hat den gespeicherten Verlauf in der gefundenen Datei, aber laufende Shells haben auch einen Verlauf im Speicher, der noch nicht gespeichert wurde. Verwenden history -wSie diese Option, um den aktuellen Verlauf in die Datei zu schreiben.