fedora 9를 실행하는 x86 대상에서 작업하고 있습니다.
재부팅 할 때마다 내 기록이 일부 상태로 돌아가고 재부팅 전에 세션에서 한 명령이 없습니다.
재부팅하기 전에 기록을 업데이트하려면 무엇을 변경해야합니까?
fedora 9를 실행하는 x86 대상에서 작업하고 있습니다.
재부팅 할 때마다 내 기록이 일부 상태로 돌아가고 재부팅 전에 세션에서 한 명령이 없습니다.
재부팅하기 전에 기록을 업데이트하려면 무엇을 변경해야합니까?
답변:
어떤 역사? 배쉬 역사? bash 기록을 잃고 한 번에 여러 세션이있는 경우 각 세션이 다른 세션 기록을 덮어 쓰기 때문입니다.
bash에게 매번 히스토리를 덮어 쓰지 말고 추가하도록 지시하십시오. .bashrc를 수정하여 실행하면 shopt -s histappend
됩니다.
또한 HISTSIZE를 큰 숫자로 내 보내서 히스토리 파일의 크기를 늘릴 수 있습니다 (바이트 단위이므로 100000이면 충분 함).
HISTSIZE
바이트 수가 아니라 기억해야 할 명령의 수입니다.
저도 같은 문제를 앓고 -하지만 내 .bashrc
파일이 이미 가지고 shopt -s histappend
및 올바른 HISTFILE
, HISTSIZE
, HISTFILESIZE
.
나에게 문제는 내 사용자 이름이 아닌 루트 가 내 .bash_history
파일을 소유 했기 때문에 사용자가 종료 할 때 해당 파일에 저장할 수 없다는 것입니다.
sudo chmod your_user_name .bash_history
그것을했다! 감사.
sudo chown user_name:user_name ~.bash_history
해결했다!
환경 변수 HISTFILE, HISTSIZE, HISTFILESIZE를 찾으십시오.
세션 또는 작업별로 내역 파일을 설정하는 스크립트를 작성하여 다음을 기반으로합니다.
# write existing history to the old file
history -a
# set new historyfile
export HISTFILE="$1"
export HISET=$1
# touch the new file to make sure it exists
touch $HISTFILE
# load new history file
history -r $HISTFILE
모든 기록 명령을 저장할 필요는 없지만 내가 관심있는 명령을 저장하고 검색하기가 더 쉬워 모든 명령을 통과합니다. 내 버전에는 모든 기록 파일이 나열되어 있으며 모든 기록 파일을 검색하는 기능이 있습니다.
전체 소스 : https://github.com/simotek/scripts-config/blob/master/hiset.sh
.bashrc에 다음 줄을 작성했습니다. 각 명령 후에 모든 세션을 파일로 저장하십시오. 터미널을 시작한 것만 큼 많은 히스토리 파일이 있습니다. 가장 최근의 히스토리 파일에서 시작하여 새 터미널을 시작할 때 라인 카운트 임계 값에 도달 할 때까지 이전 세션의 모든 히스토리 파일을 히스토리 버퍼로로드하십시오.
HISTCONTROL=''
HISTFOLDER=~/.bash_histories
HISTFILEEXT=history # only files in $HISTFOLDER with this extension will be read
shopt -s histappend # append when closing session
mkdir -p $HISTFOLDER
HISTFILE=$HISTFOLDER/$(date +%Y-%m-%d_%H-%M-%S_%N).$HISTFILEEXT # create unique file name for this session. Nanoseconds seems to be unique enough, try: for ((i=0; i<=10; i++)); do date +%Y-%m-%d_%H-%M-%S_%N; done
# if HISTFILE unset, history is not saved on exit -> not really necessary if we save after each command, but its a double net safety
HISTSIZE=-1 # maximum number of commands to hold inside bash history buffer
HISTFILESIZE=-1 # maximum number of lines in history file
# history -a $HISTFILE # bash saves the total history commands entered since startup or since the last save and saves that amount of commands to the file. This means reading a history file after typing commands will trip up bash, but this won't be a problem if the history file is only loaded in the beginning. This means that only new commands are saved not all the old loaded commands, thereby we can load as many history files into the buffer as we want and still only save newly thereafter typed commands
PROMPT_COMMAND="history -a $HISTFILE; $PROMPT_COMMAND" # This command is executed after very typed command -> save history after each command instead after only closing the session
# Load old histories from last 5 files/sessions
HISTLINESTOLOAD=2000
# --reverse lists newest files at first
names=($(ls --reverse $HISTFOLDER/*.$HISTFILEEXT 2>/dev/null))
toload=()
linecount=0
# Check if is really file and count lines and only append to $toload if linecount under $HISTLINESTOLOAD
for fname in ${names[*]}; do
if test -f $fname; then
linecount=$((linecount+$(wc -l < $fname) ))
if test $linecount -ge $HISTLINESTOLOAD; then
break
fi
toload+=($fname)
fi
done
# Beginning with the oldest load files in $toload into bash history buffer
for (( i=${#toload[*]}-1; i>=0; i-- )); do
history -r ${toload[$i]}
done
Amazon EC2 Ubuntu 인스턴스가 기록을 저장하지 않았습니다. .bashrc
다른 답변에 언급 된 모든 필수 명령이 있었지만 누락 된 것은 파일이었습니다. 제대로 작동하려면 터치해야했습니다.
touch ~/.bash_history
이 질문에 대한 정답은 다음과 같습니다.
http://linuxcommando.blogspot.com/2007/11/keeping-command-history-across-multiple.html