Możliwa duplikat:
Czy pliki historii można zunifikować w bash?
Używam Ubuntu Server 9.10 i chciałbym mieć możliwość zobaczenia mojej historii bash dla więcej niż jednej sesji terminala. To jest moje ostatnie 200 poleceń, nawet jeśli jestem wylogowany pomiędzy nimi.
Kiedy używam, po history
prostu widzę wszystkie polecenia z mojej faktycznej sesji terminala. Jak mogę zobaczyć więcej historii poleceń z Bash? Czy są jakieś specyficzne ustawienia dla bash, które powinienem zmienić od wartości domyślnych w Ubuntu?
Nie mam ~/.bash_history
pliku Ale mam ~/.bashrc
z HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredups
iHISTCONTROL=ignoreboth
echo $HISTFILE
/home/sanoj/.bash_history
echo $HISTSIZE
500
echo $HISTFILESIZE
500
echo $HISTCONTROL
ignoreboth
AKTUALIZACJA: Próbuję teraz Ubuntu Server 10.10 w VirtualBox. Jeśli po prostu wyłączę VirtualBox bez polecenia zamykania, to następnym razem, gdy uruchamiam komputer, polecenia z ostatniej sesji nie są zapisywane w pliku historii.
Polecenia są zapisywane tylko wtedy, gdy wyłączę maszynę za pomocą polecenia zamknięcia. Np. Wyłączenie -P 0.
To musi być powód mojego problemu. Muszę więc wymyślić, jak częściej zapisywać historię poleceń. Np. Po każdym poleceniu.
źródło
echo $HISTSIZE
iecho $HISTFILESIZE
? Mój (Ubuntu)~/.bashrc
ma takie sameHISTCONTROL
linie jak twój, który jest martwy w mózgu, ponieważ drugi zastępuje pierwszy, a wartości powinny być rozdzielone dwukropkami, a nie przecinkami. Jeśli tak,set -o
czy wyświetla wiersz „historia włączona”?500
sięecho
na obu zmiennych ihistory on
Odpowiedzi:
Możesz użyć
aby natychmiast dołączyć historię w pamięci do pliku historii. Jedna sesja terminalowa nie widzi innych, chyba że zostanie to zrobione lub druga zostanie zakończona.
Możesz użyć
aby zobaczyć tę liczbę wpisów.
Oprócz tego
HISTSIZE
zobacz wpis na stronie podręcznika użytkownika Bash dotyczącyHISTFILESIZE
.źródło
history -a´ doesn't do anything for me, and not
historia 200 | mniej` albo, ale zaktualizowałem swoje pytanie o więcej informacji. W każdym razie dzięki.Po wylogowaniu historia zostaje dołączona do pliku
~/.bash_history
. Zajrzyj tam.Domyślnie zapamięta 500 ostatnich poleceń. Jeśli chcesz zapisać więcej, ustaw zmienną
HISTSIZE
w~/.bashrc
.Dodam też
ignoredups
doHISTCONTROL
(zHISTCONTROL=$HISTCONTROL:ignoredup
). Powoduje to, że duplikaty kolejnych poleceń są zapisywane tylko raz.Zobacz,
man 1 bash
co jeszcze możesz dostroić do historii.źródło
~/bash_history
pliku, a nieHISTSIZE
w~/.bashrc
ale mamHISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredups
iHISTCONTROL=ignoreboth
i jest Ubuntu Server, jeżeli sprawa..
na~/.bash_history
. I doHISTSIZE
tego użyje tylko domyślnej wartości 500 wpisów.~/.bash_history
pliku w moim systemie. Kiedyśls -a
sprawdzałem.$HISTFILE
zmiennej, więcecho $HISTFILE
powie ci, gdzie szukać.echo $HISTFILE
daje mi/home/sanoj/.bash_history
- dziwne. Może nie jest aktywowany ze względów bezpieczeństwa?Historia bash jest zwykle ładowana, gdy powłoka zaczyna działać, i jest zapisywana, gdy jest normalnie zamykana. Możesz użyć
history -a
ihistory -n
zastąpić to, ale nie automatycznie, chyba że wykorzystasz$PROMPT_COMMAND
lub coś podobnego.źródło
Sanoj, to naprawdę powinno „po prostu działać”; Nie sądzę, że powinno być coś specjalnego, co musisz zrobić, aby to umożliwić. Wygląda na to, że coś zakłóca normalny bieg wydarzeń.
Zajrzałbym do / etc / profile, / etc / bashrc (lub może /etc/bash.bashrc według niektórych źródeł), ~ / .bash_profile, ~ / .bashrc, ~ / .bash_login, ~ / .bash_logout, aby zobaczyć jeśli jest coś, co może mieć wpływ na historię (być może
grep -i hist
w każdym z powyższych plików).... W szczególności zastanawiam się, czy masz coś w ~ / .bash_logout, które usuwa plik.
Alternatywnie, czy jest możliwe, że coś zastępuje
$HOME
zmienną?źródło