all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Arsen Arsenović" <arsen@aarsen.me>
To: rms@gnu.org
Cc: brickviking@gmail.com, sbaugh@catern.com, luangruo@yahoo.com,
	emacs-devel@gnu.org
Subject: Re: [OT] Not clobbering bash history
Date: Mon, 04 Dec 2023 14:05:53 +0100	[thread overview]
Message-ID: <864jgy85g5.fsf@aarsen.me> (raw)
In-Reply-To: <E1r9zM4-000405-Gg@fencepost.gnu.org>

[-- Attachment #1: Type: text/plain, Size: 3840 bytes --]

Hi,

Richard Stallman <rms@gnu.org> writes:

> [[[ To any NSA and FBI agents reading my email: please consider    ]]]
> [[[ whether defending the US Constitution against all enemies,     ]]]
> [[[ foreign or domestic, requires you to follow Snowden's example. ]]]
>
> I am trying to understand the words you wrote.
>
>   > libhistory should, on recall attempt,
>
> What does "recall attempt" mean?  I don't know that term.

I mean the action usually bound to C-p (I believe the libhistory
function is previous_history).

>                                           try to re-read the history file
>   > from the last point it was on
>
> What does "last point it was on" mean?

Say that the history has eight entries, and a ninth was added by a
parallel process, the current process would be at the point after the
eighth element and should continue reading from there next time it wants
a history entry.

>                                   in order to catch new histories, it should
>   > append to the file,
>
> What should it append, and in what circumstances?

New history entries, always (i.e. it should only ever append, as if via
O_APPEND, to ~/.bash_history and friends, at least while not holding
locks).

>                         and it should attempt to lock the file via flock or
>   > similar if such facilities are available (just in case).
>
> If two different shells will try to write history into one single file,
> are they doomed to give bad results, one way or another>  It seems to me
> that the crucial thing is for them to use two different files.

Not necessarily.  If both shells use a single write() syscall on an
O_APPEND file, they should work as expected to my awareness.  But, if
not, then locks would help (flock-ing the file before adding an entry
ensures only one shell is ever writing to enable correct history
storage).

>   > In the event of truncation, 
>
> What truncates the file?  When does that occur?

bash/libhistory would need to if it'd like to rotate the history file
due to HISTSIZE.

> Is such truncation _supposed_ to occur, or is it a bug that it occurs?

Depends.  If the user sets HISTSIZE to, say, 500, and enters a new
command, and it'd have been the 501st, the history file would need to be
truncated to be rotated.  In that scenario, it is intended.  If the user
did not intend to have HISTSIZE set to a positive value, then any
truncation is a bug (as history would be lost).

>                                 libhistory needs to be careful not to lose
>   > any histories that were to be submitted in between the moment of
>   > determination of truncation and commitment of the truncation to disk.
>
> I don't follow.

If a bash process decides to rotate the history file as a result of
HISTSIZE, and another bash process decides to do the same, one of their
new history entries would be lost due to the other one overriding it.
This would be a bug.

Hence, libhistory needs to be careful to prevent this.

>   > As a QoL feature, bash should prevent history truncation if ran with
>   > --norc or other flags that would inhibit HISTFILE being set potentially.
>
> I don't understand this point -- can you explain?

I meant to say HISTSIZE here.  My apologies.

If HISTSIZE is set in my RC file to a negative value (per (bash) Bash
Variables, this should inhibit history file rotation and/or truncation),
but if a shell is started with --norc (by, say, TRAMP, perhaps), then
bash would not be aware of the users desired HISTSIZE.  In that event,
it should be conservative and *not* overwrite the users' history.

I suspect that the latter is what was causing sporadic truncation in my
case (but I haven't confirmed so unfortunately).

Thanks, have a lovely day.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

  reply	other threads:[~2023-12-04 13:05 UTC|newest]

Thread overview: 118+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-18 14:54 Turning on savehist-mode by default sbaugh
2023-11-18 16:33 ` [External] : " Drew Adams
2023-11-18 18:19   ` Philip Kaludercic
2023-11-18 21:06     ` Drew Adams
2023-11-18 21:42       ` Philip Kaludercic
2023-11-18 23:01         ` Drew Adams
2023-11-19  6:02           ` Eli Zaretskii
2023-11-19  6:56             ` Drew Adams
2023-11-19  7:05           ` Juri Linkov
2023-11-19  7:32             ` Yuri Khan
2023-11-19  8:26               ` Eli Zaretskii
2023-11-19  9:06                 ` Yuri Khan
2023-11-19  9:24                   ` Eli Zaretskii
2023-11-19 15:09                   ` Spencer Baugh
2023-11-20  9:53                 ` Manuel Giraud via Emacs development discussions.
2023-11-20 12:23                   ` Eli Zaretskii
2023-11-20 13:15                     ` Manuel Giraud via Emacs development discussions.
2023-11-20 14:05                       ` Eli Zaretskii
2023-11-23 15:57                         ` Eli Zaretskii
2023-11-23 16:31                           ` Manuel Giraud via Emacs development discussions.
2023-11-20 16:57                     ` Drew Adams
2023-11-20 18:34                       ` Eli Zaretskii
2023-11-20 18:54                         ` Drew Adams
2023-11-20 19:16                           ` Eli Zaretskii
2023-11-19 16:42               ` Drew Adams
2023-11-19 16:42             ` Drew Adams
2023-11-19 16:27         ` Visuwesh
2023-11-19 17:33           ` sbaugh
2023-11-19  6:59 ` Po Lu
2023-11-19  7:10   ` Eli Zaretskii
2023-11-19  7:27     ` Po Lu
2023-11-19  8:23       ` Eli Zaretskii
2023-11-19 14:08   ` Dmitry Gutov
2023-11-19 14:38     ` Po Lu
2023-11-19 14:43       ` Dmitry Gutov
2023-11-20  0:11         ` Po Lu
2023-11-19 15:17       ` Spencer Baugh
2023-11-20  0:09         ` Po Lu
2023-11-20  3:15           ` sbaugh
2023-11-20  3:40             ` Po Lu
2023-11-20 14:32               ` Spencer Baugh
2023-11-20  5:55         ` [OT] Not clobbering bash history brickviking
2023-11-20 17:50           ` Juri Linkov
2023-11-22  3:01           ` [OT] " Richard Stallman
2023-11-22  3:32             ` Arsen Arsenović
2023-11-22 20:43               ` Jens Schmidt via Emacs news and miscellaneous discussions outside the scope of other Emacs mailing lists
2023-11-22 21:50                 ` Arsen Arsenović via Emacs news and miscellaneous discussions outside the scope of other Emacs mailing lists
2023-11-23 12:42                   ` Spencer Baugh
2023-11-23 20:12                     ` Jens Schmidt via Emacs news and miscellaneous discussions outside the scope of other Emacs mailing lists
2023-11-25  2:58               ` Richard Stallman
2023-11-26 10:20                 ` Arsen Arsenović
2023-12-04  3:10                   ` Richard Stallman
2023-12-04 13:05                     ` Arsen Arsenović [this message]
2023-12-07  2:49                       ` Richard Stallman
2023-12-07  5:34                         ` mbork
2023-12-07  5:48                           ` Emanuel Berg
2023-12-07  9:34                             ` mbork
2023-12-07  5:52                           ` Yuri Khan
2023-12-07  6:22                             ` Emanuel Berg
2023-12-07  6:44                         ` Jean Louis
2023-12-11 12:09                           ` Arsen Arsenović via Emacs news and miscellaneous discussions outside the scope of other Emacs mailing lists
2023-12-07 13:06                         ` Arsen Arsenović via Emacs news and miscellaneous discussions outside the scope of other Emacs mailing lists
2023-12-08  3:56                           ` Richard Stallman
2023-12-08 10:15                             ` Arsen Arsenović via Emacs news and miscellaneous discussions outside the scope of other Emacs mailing lists
2023-12-08  3:54                       ` Richard Stallman
2023-12-08  3:54                       ` Richard Stallman
2023-12-08  6:22                         ` brickviking
2023-12-08 10:13                         ` Arsen Arsenović via Emacs news and miscellaneous discussions outside the scope of other Emacs mailing lists
2023-12-16 18:56   ` Turning on savehist-mode by default Stefan Kangas
2023-11-20  3:08 ` Richard Stallman
2023-11-20  3:16   ` Spencer Baugh
2023-11-28 11:04 ` Thanos Apollo
2023-11-28 14:11   ` Thanos Apollo
2023-11-28 14:38   ` Eli Zaretskii
2023-11-28 21:07     ` Adam Porter
2023-11-28 21:46       ` Dmitry Gutov
2023-11-29 12:31       ` Eli Zaretskii
2023-12-01  1:50 ` Björn Bidar
2023-12-16 19:01 ` Stefan Kangas
2023-12-16 19:40   ` Eli Zaretskii
2023-12-16 22:57     ` Stefan Kangas
2023-12-16 23:57       ` Po Lu
2023-12-17  5:42         ` Adam Porter
2023-12-17  7:49           ` Stefan Kangas
2023-12-17 11:09             ` Adam Porter
2023-12-22 10:45               ` Stefan Kangas
2023-12-22 11:48                 ` Visuwesh
2023-12-22 11:52                 ` Adam Porter
2023-12-22 14:22                   ` Yuri Khan
2023-12-17 12:02             ` Adam Porter
2023-12-17  8:12           ` Eli Zaretskii
2023-12-17 11:19             ` Adam Porter
2023-12-17 12:11               ` Eli Zaretskii
2023-12-19  3:49                 ` Richard Stallman
2023-12-17 18:48           ` [External] : " Drew Adams
2023-12-17  7:50         ` Eli Zaretskii
2023-12-17 11:48           ` Po Lu
2023-12-17 12:26             ` Eli Zaretskii
2023-12-17 13:31               ` Po Lu
2023-12-17 13:45                 ` Eli Zaretskii
2023-12-17 17:55                   ` Juergen Fenn
2023-12-17 18:09                     ` Eli Zaretskii
2023-12-17 19:51                       ` Juergen Fenn
2023-12-17 20:20                         ` Eli Zaretskii
2023-12-17 20:21                         ` Dmitry Gutov
2023-12-17 20:38                           ` Juergen Fenn
2023-12-17 20:52                             ` Dmitry Gutov
2023-12-17 21:12                               ` [External] : " Drew Adams
2023-12-17 21:16                                 ` Dmitry Gutov
2023-12-17 21:47                                   ` Juergen Fenn
2023-12-17 22:22                                     ` Drew Adams
2023-12-17 21:55                                   ` Drew Adams
2023-12-17 21:57                                     ` Dmitry Gutov
2023-12-17 22:34                                       ` Drew Adams
2023-12-18  0:47                           ` Po Lu
2023-12-18  3:36                             ` Eli Zaretskii
2023-12-17  7:40       ` Eli Zaretskii
2023-12-17 10:03         ` tomas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=864jgy85g5.fsf@aarsen.me \
    --to=arsen@aarsen.me \
    --cc=brickviking@gmail.com \
    --cc=emacs-devel@gnu.org \
    --cc=luangruo@yahoo.com \
    --cc=rms@gnu.org \
    --cc=sbaugh@catern.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.