Số lịch sử Bash không bắt đầu từ 1?


7

Tôi đã tùy chỉnh dấu nhắc bash của mình (Tôi đang dùng OS X 10.7) khi tôi gặp một thứ gì đó lạ. Trong lời nhắc của tôi, tôi đã bao gồm!, Nó sẽ cho tôi số lịch sử. Tuy nhiên, số lịch sử luôn bắt đầu ở 501, thay vì 1. Điều này đúng ngay cả khi tôi khởi động lại Terminal.

Tôi dường như không thể tìm thấy bất cứ điều gì gần với điều này, tôi đã tự hỏi nếu các bạn có thể cung cấp một số cái nhìn sâu sắc.

Câu trả lời:


8

Từ người đàn ông bash:

   On startup, the history is initialized from the file named by the vari
   able HISTFILE (default ~/.bash_history).  The file named by  the  value
   of  HISTFILE  is  truncated,  if necessary, to contain no more than the
   number of lines specified by the value of HISTFILESIZE. [...] When an 
   interactive  shell  exits, the last $HISTSIZE lines are copied from the
   history list to $HISTFILE.

Mặc dù văn bản đó khá rõ ràng, chúng ta hãy chơi một chút bằng ví dụ (đây là một hệ thống gỡ lỗi, nhưng bash là bash).

Tình trạng lịch sử của tôi ngay bây giờ:

~$ set | grep HIST
HISTCONTROL=ignoredups:ignorespace
HISTFILE=/home/hmontoliu/.bash_history
HISTFILESIZE=2000
HISTSIZE=1000

Vì HISTFILESIZE là 2000 và HISTSIZE là 1000, chỉ 1000 dòng cuối cùng của HISTFILE có sẵn để bạn có thể có ấn tượng sai rằng lịch sử của tôi bắt đầu từ 1000.

~$ history | head -1
 1000  if i=1; then echo $i; done

~$ history | wc -l
1000

Nhưng thực sự HISTFILE lưu trữ 2000 lệnh cuối cùng:

 ~$ wc -l $HISTFILE
2000 /home/hmontoliu/.bash_history

Nếu bạn nghĩ rằng điều đó gây phiền nhiễu, bạn có thể bằng HISTSIZE và HISTFILESIZE

~$ echo "export HISTSIZE=$HISTFILESIZE" >> .bashrc
~$ bash -l
~$ history | head -1
    1  ls
~$ history | wc -l
2000
~$ set | grep HIST
HISTCONTROL=ignoredups:ignorespace
HISTFILE=/home/hmontoliu/.bash_history
HISTFILESIZE=2000
HISTSIZE=2000

Một gợi ý cuối cùng: bạn nên chạy help historyđể xem các hành động bạn có thể làm với lịch sử của mình


4

Câu trả lời từ hmontoliu khá tốt, đây chỉ là phiên bản TL; DR.

Lịch sử bash luôn chọn nơi bạn rời đi. Nó giữ một lịch sử bán cố định của các lệnh chạy trong một tệp trong thư mục chính của bạn. Mỗi khi bạn khởi động bash shell, nó sẽ tải tệp lịch sử này và bạn có thể cuộn lên để các lệnh chạy trong các phiên trước đó. Nếu bạn có 274 lệnh trước đó trong lịch sử, số lịch sử lệnh của bạn trên shell mới sẽ bắt đầu bằng 275.

Tệp lịch sử được cắt ngắn đến độ dài tối đa được chỉ định bởi biến môi trường $HISTFILESIZE. Rõ ràng là bạn đã cắt ngắn tệp lịch sử của mình tối đa 500 dòng, vì vậy mọi shell mới bắt đầu từ 501. Các mục lịch sử trước đó là tập hợp của 500 mục cuối từ các shell trước đó.


0

Lịch sử được lưu trong, theo mặc định , ~/.bash_history. Lịch sử của shell tương tác được lưu vào tệp khi thoát, tùy thuộc vào cài đặt trong shell. Đọc trang hướng dẫn về bash (1) và tìm kiếm 'history'.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.