Am 2008-09-24 23:14:24, schrieb Baurzhan Ismagulov: > This is certainly interesting. I suppose you mean history -w and history > -a, don't you?
WRONG, it is history -a # append only NEW commands from the current session # to the ~/.bash_history which lock the file # temporary and this is working since over 8 years. history -r # read history from the ~/.bash_history file > But if bash doesn't lock the file, I still don't see how > this can be "mathematically" correct: If history -a reads the file into > the memory and writes the new one instead, another session could still > corrupt the file. Could you please elaborate? Under X, open 4 XTerms and then write in Xterm 1: echo "XTerm 1" in Xterm 2: echo "XTerm 2" in Xterm 3: echo "XTerm 3" in Xterm 4: echo "XTerm 4" then close XTerm 1 and look at the history. You will find the last entry echo "XTerm 1" now close XTerm 4 and you will see, the last entry echo "XTerm 4" but the previous entry echo "XTerm 1" is gone. Now try to kill -SIGTERM ${PID_OF_XTERM_2} ${PID_OF_XTERM_3} and look in the ~/.bash_history where you will find only echo "XTerm 3" since the Processes are killed in sequence and Xterm3 is overwriting the changes from XTerm2. While reading and writing, the ~/.bash_history will be locked and after read/write immediately released... So if you create a function in your ~/.bash_login like ----[ '~/.bash_login' ]------------------------------------- export HISTFILESIZE=1000 shopt -s cmdhist histappend histverify lithist histupdate() { history -a $1 history -r $1 } ------------------------------------------------------------ and in the XTerm or the Console you can type 'histupdate' and you are done. Also I have added $1, which give me the option append/read to/from a specified file. I have had never problems with "The BaSH". And since I hate duplicated history entries in my ~/.bash_history, I use ----[ '~/.bash_logout' ]------------------------------------ touch ~/.bash_history.tmp (cat ~/.bash_history) | while read LINE do grep --regexp="$LINE" ~/.bash_history.tmp >/dev/null 2>&1 if [ $? -ne 0 ] ; then FLAG=true echo -e "${LINE}" >>~/.bash_history.tmp fi done if [ "${FLAG}" = "true"] ; then /bin/mv -f ~/.bash_history.tmp ~/.bash_history else /bin/rm -f ~/.bash_history.tmp fi ------------------------------------------------------------ which keep the sequence of the history entries, exactly the first occurence. OK, I have a better one which use the last enty, but this is only interesting if you have not more entries as 100-200 and/or a fast machine since it is complex and NEED ONLY "The BaSH". Thanks, Greetings and nice Day/Evening Michelle Konzack Systemadministrator 24V Electronic Engineer Tamay Dogan Network Debian GNU/Linux Consultant -- Linux-User #280138 with the Linux Counter, http://counter.li.org/ ##################### Debian GNU/Linux Consultant ##################### Michelle Konzack Apt. 917 ICQ #328449886 +49/177/9351947 50, rue de Soultz MSN LinuxMichi +33/6/61925193 67100 Strasbourg/France IRC #Debian (irc.icq.com)
signature.pgp
Description: Digital signature