bug-bash
[Top][All Lists]
Advanced

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

Re: issues in bash found while creating command result display


From: Paul Wise
Subject: Re: issues in bash found while creating command result display
Date: Mon, 15 Apr 2019 09:40:44 +0800
User-agent: Evolution 3.30.5-1

On Sun, 2019-04-14 at 17:28 -0400, Chet Ramey wrote:

> That's the number of positional parameters.

Oops, I mean the command number variable \# that is available at PS1
evaluation time but not when PROMPT_COMMAND is run. I was able to
workaround this by deferring the decision to display the status until
the PS1 evaluation time and using math functions to access and store
the command number variable \# to a normal variable.

> Syntax errors set $? to 2. SIGINT at the prompt sets $? to 130. There's
> no way to determine whether or not those exit statuses differ from an
> exit status resulting from a command being run.

I managed to workaround this with some heuristics but it would be much
nicer to be able to properly differentiate between these cases.

> PIPESTATUS doesn't get set until a job completes. $? will be reset to
> 128+SIGNUM when a job stops, since that is what shells do and it seems
> reasonable as a way to let the user know a job suspended. It doesn't seem
> particularly useful to set PIPESTATUS to, e.g., {146, 146, 146} in this
> case, though.

Having the former value of PIPESTATUS when $? has been reset doesn't
seem useful either, I think it would be better to unset PIPESTATUS when
setting $? but not PIPESTATUS if you aren't going to set PIPESTATUS.

> There is no way to distinguish these cases.  There is a lot of convention
> at work here, and convention is that well-behaved programs don't exit with
> a status greater than 128.

Unfortunately I have discovered that the convention isn't respected by
a number of programs so it would be nice to have a feature for this.

> The tool you have is the exit status of the last command.
> From that perspective, there's no difference.

From the perspective of the user of a shell prompt there is a difference.

-- 
bye,
pabs

https://bonedaddy.net/pabs3/

Attachment: signature.asc
Description: This is a digitally signed message part


reply via email to

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