bug-bash
[Top][All Lists]
Advanced

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

Re: value of $? and exit status are partially undocumented, possibly wro


From: Chet Ramey
Subject: Re: value of $? and exit status are partially undocumented, possibly wrong
Date: Tue, 17 Oct 2023 10:16:35 -0400
User-agent: Mozilla Thunderbird

On 10/13/23 9:18 AM, Vincent Lefevre wrote:
With bash 5.2.15(1)-release under Debian (bash 5.2.15-2+b6 package),
on one of my machines:

$ bash -c 'echo $?'
0

$ bash
vlefevre@cventin:~$ echo $?
0

$ bash ; echo $?
vlefevre@cventin:~$ exit
exit
0

and on another one:

$ bash -c 'echo $?'
0

$ bash
vinc17@zira:~$ echo $?
1

$ bash ; echo $?
vinc17@zira:~$ exit
exit
1

The difference seems to be due to the exit status of the last command
of the .bashrc file. But this is undocumented.

How so? The exit status ($?) is the status of "the last command executed,"
and an interactive non-login shell "reads and executes commands from
~/.bashrc."

Note that on the opposite, for a login shell, e.g. "bash -l", the
exit status of the last command of .bash_logout is ignored for the
exit status of bash. So this is confusing.

Think of it like the EXIT trap. If you run `exit 4', you don't want
~/.bash_logout changing that exit status.


Moreover, for "bash -l /dev/null", when .bash_profile ends with a
non-zero exit status, the behavior contradicts

Commands are executed. They are read and executed from .bash_profile.

--
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    chet@case.edu    http://tiswww.cwru.edu/~chet/




reply via email to

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