[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [bug] PROMPT_COMMAND is not executed as expected in some situations

From: Franklin, Jason
Subject: Re: [bug] PROMPT_COMMAND is not executed as expected in some situations
Date: Sat, 18 Apr 2020 09:00:44 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.6.0

On 4/16/20 10:11 AM, Chet Ramey wrote:
> On 4/16/20 9:21 AM, Franklin, Jason wrote:
>> On 4/15/20 5:35 PM, Chet Ramey wrote:
>>> These all pretty much all fall into the category of the editor reprinting
>>> the prompt before it returns.
>> Hmmm...
>> So, is there no way to have Bash handle the printing of the prompt after
>> the return of the command and of the editor?
> Bash doesn't have control at that point. It's readline running a bindable
> function. It's as if you hit ^L when the readline line buffer was empty:
> readline reprints the prompt, but should it call back to bash somehow --
> through a hook function that doesn't currently exist -- to execute
>> This would allow PROMPT_COMMAND to function as expected.  It is
>> surprising to see status indicators in my prompt NOT be updated when
>> using <C-x><C-e>.
> I don't think that most people expect PROMPT_COMMAND in that situation.
>> I thought that this would be easy.  Is it really not possible to fix?
> I'm saying it's not a bug at all, and doesn't need fixing.

As a programmer, I can understand that this may be a tough fix.
However, as a user, I must say that I expect PROMPT_COMMAND to be run
whenever PS1 is printed to prompt me for a new command.  The bash man
page makes this clear. To quote:

  If set, the value is executed as a command prior to issuing each
  primary prompt.

My PROMPT_COMMAND does a lot of neat stuff.  It works flawlessly too,
but obviously not after using, for example, <C-x><C-e>, because it
doesn't get invoked then.  This means that indicators about the most
recent command are not updated when I open an editor to enter a command
(or use histverify or show completions).

A simple example where the prompt is not updated as expected (this one
doesn't involve PROMPT_COMMAND, but shows why a full prompt update is

$ bash --norc
$ PS1='[$?] '"$PS1"
# now, exit status is in prompt, which is pretty useful
# use <C-x><C-e> to edit and enter command "false" and save and quit
# the exit status should be [1], but is [0], so the indicator is wrong

I hope this clarifies my point of view on this issue.  It may be a tough
ask, so I don't expect a ton of effort to fix this if others aren't

In any case, thanks so much for all of your magnificent work on Bash.
I've been using Bash for years, and I don't plan to stop!  I wish I had
the knowledge of Bash internals to just code up a patch.  I tried, but
it was to no avail. :(


Jason Franklin

reply via email to

[Prev in Thread] Current Thread [Next in Thread]