From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25365 invoked by alias); 4 Apr 2015 17:43:41 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 20082 Received: (qmail 29148 invoked from network); 4 Apr 2015 17:43:40 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW, SPF_HELO_PASS autolearn=ham version=3.3.2 X-Injected-Via-Gmane: http://gmane.org/ To: zsh-users@zsh.org From: Thorsten Kampe Subject: Re: How to trap EXIT like in bash Date: Sat, 4 Apr 2015 19:43:22 +0200 Message-ID: References: <1428167314.5875.2.camel@niobium.home.fifi.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: p5de5aada.dip0.t-ipconnect.de User-Agent: MicroPlanet-Gravity/3.0.4 * Philippe Troin (Sat, 04 Apr 2015 10:08:34 -0700) > > On Sat, 2015-04-04 at 17:20 +0200, Thorsten Kampe wrote: > > in Bash `trap "echo trapped" EXIT` will trigger when the script > > terminates normally and on SIGINT, SIGTERM, and SIGHUP. > > > > In Zsh, `trap "echo trapped" EXIT` triggers only on normal exit, but > > `trap "echo trapped" EXIT INT` will actually trigger twice on Ctrl-C. > > > > How can I trap normal exit, Ctrl-C, SIGTERM and SIGHUP so trap > > function will only run once? > > I use this: > > trap "echo trapped; exit 0" EXIT INT I just tested it: Zsh is trapped once but bash twice on INT. This works: ``` if [[ $shell = bash ]] then trap "echo trapped" EXIT elif [[ $shell = zsh ]] then trap "echo trapped; exit" INT fi ``` BUT: it does not work when I extend the signals to ``` elif [[ $shell = zsh ]] then trap "echo trapped; exit" INT HUP TERM fi ``` Then Zsh does actually ignore the kill (TERM) signal. Thorsten