On 07/12/2011 01:57 AM, Douglas Mencken wrote:

Hey! history is good, at least for grepping inside it.
And it's useful to have history left on re-login.
History must be permanent, and removable by request.
You seem to have missed the point of the patch. That's probably my fault 
though, I guess I didn't elaborate it enough in the initial mail.
I'll go into a bit more detail in this mail then.

First of all, the history remains to be persistent; it's still loaded after 
starting a new shell, and you can still do everything with it as you're used to 
(e.g. grepping).
This patch only introduces a temporary location for the history file until the 
shell is exited. In other words: a buffer.

BusyBox writes to .ash_history after each and every command, which we don't 
want on e.g. mobile devices with a flash-based storage device.
Using a buffer helps reducing the amount of erase/write cycles on the storage 
medium

This patch basically makes ash do this:
1) User starts shell, copy $HOME/.ash_history to /tmp/.ash_hist_$USER 
(changeable with ASH_HIST_BUFFER_PATH)
2) During shell use, history is written to /tmp/.ash_hist_$USER in the _exact_ 
same way as BusyBox used to (i.e. after each command); nothing outside 
shell/ash.c is touched by my patch.
3) User exits shell, copy /tmp/.ash_hist_$USER back to $HOME/.ash_history

Assuming /tmp contains an in-memory filesystem, this should save quite a few 
writes to the storage medium.
Also, the above behaviour is only activated when ASH_HIST_BUFFER is set to y 
(which it isn't by default), so you're not forced to the new behaviour.

Please have a look at the code and you'll probably see 1:1 what I'm talking 
about. The code is relatively small and easy to read in my opinion.
If you, or anyone else, have any further questions, feel free to ask them.

--Dennis

P.s. I completely agree with your opinion on shell history.

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to