On 6/4/25 1:14 PM, Oğuz wrote:
On Wed, Jun 4, 2025 at 5:09 PM Chet Ramey <chet.ra...@case.edu> wrote:
You are running this with job control enabled, the shell doesn't receive
the SIGINT, the shell notices that `sleep' exited due to SIGINT and
interrupts the `source' (since that is what most people want -- bash
behaves more like a non-interactive shell when it's reading input from
a different source).
`source' is a red herring here, this report boils down to the following
$ trap uname INT
$ sleep 10
^C
$
Other shells (zsh, ksh, ash and pdksh variants) execute the trap
handler on ^C, bash is the outlier.
Yep, it never has. It's documented in bash-5.3:
"When job control is enabled, bash does not receive keyboard-generated
signals such as SIGINT while it is waiting for a foreground command.
An interactive shell does not pay attention to the SIGINT, even if the
foreground command terminates as a result, other than noting its exit
status. If the shell is not interactive, and the foreground command
terminates due to the SIGINT, bash pretends it received the SIGINT it-
self (scenario 1 above), for compatibility."
--
``The lyf so short, the craft so long to lerne.'' - Chaucer
``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU c...@case.edu http://tiswww.cwru.edu/~chet/