Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
BUG?: TRAPEXIT is not executed on interruption when TRAPINT is not defined
- X-seq: zsh-workers 55221
- From: Henry Tung <compgamer89@xxxxxxxxx>
- To: zsh-workers@xxxxxxx
- Subject: BUG?: TRAPEXIT is not executed on interruption when TRAPINT is not defined
- Date: Sun, 18 Oct 2026 17:26:38 -0700
- Arc-authentication-results: i=1; mx.google.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=sx4dbNxFIo3n6QLR+5h0qM1zHj/V5mF1IBETzq0x8uE=; fh=SbTlPuNNxBzTkRlwWtqw/TXBY0HvGvtE97RpPp3sJPM=; b=Zq4LJRH/PQU94jIZTRb9obigngOKUkYaogpSTTdc2YZaUcgPtBwS0YW7ndVr1BMYUR bC/8/YhJtOEYpGSq8dh40FME7nCOLQfgeb2iLu+28uirWN6B/RW4dOdfjpWjfRoTdqRV XjIih3uMS8LxVy5izCRgp1/tvhAVkvvvMLDAJk5elnTylhVEWS8+3vrld6zUk0xZw7Y0 Y+nncxAdVIZVRShL49kKTizyJ+dIHLERMwN3Fuxrhf7yxGOP66Hk7SauZi0AIfDep9eq v2LWwLzaqFkfTanV9eVv8q7GEYkQn1kPovY9OY7XvMh6rjH7uI6l4BZbitAQ8Bmzbs0A xCLw==; darn=zsh.org
- Arc-seal: i=1; a=rsa-sha256; t=1792369609; cv=none; d=google.com; s=arc-20260327; b=Lx+13XPWXspQ/qzMb/mp1p51N2DKHz4LU2XMJjthJLTwplpSLdzxl/o1pHUdFUYrEt J8EBVT2oykIQUGKs8CDrE/0ZF818Qtyz7JZO+gZBZxjzqa1VbnaFZ/IwIxGEY+QHfn8U MJg4iAwXC/jQgz4kvciQddS3Gxb29z1t5BjwpGNeaoIbsHZwOwNWWL+ZQ85R4C9GnIKh fwrUdz5hCU34b+nQ8HF/sEgwqArzpyNdKv03EpxporwWTiOSt9Wx1miZQxLkOVVnjsKO SMvZ0Yikh8A1gZtYNjumnboUQGaLTSJMphU1XpWcOJglXRblu9rR2eRKpYjCgIW7k0DS uTHg==
- Archived-at: <https://zsh.org/workers/55221>
- List-id: <zsh-workers.zsh.org>
Hi zsh contributors,
Not sure if I'm understanding this correctly, but from docs it sounds
like (top-level) TRAPEXIT should execute on any means of script
termination if possible (e.g. other than SIGKILL). Presumably, that
should include terminal interrupt.
But the following script shows that TRAPEXIT is run on graceful exit,
but does not run on interrupt until TRAPINT is also defined:
===========
#!/usr/bin/zsh
TRAPEXIT() { echo 'EXIT' }
# When uncommented, TRAPEXIT will run on SIGINT
#TRAPINT() {}
sleep 2
===========
Sample execution:
$ ./test.sh
EXIT
$ ./test.sh
^C
$ sed -e 's/#TRAPINT/TRAPINT/' -i test.sh
$ ./test.sh
^CEXIT
$ zsh --version
zsh 5.9.2 (x86_64-pc-linux-gnu)
$
Messages sorted by:
Reverse Date,
Date,
Thread,
Author