Path: csiph.com!goblin1!goblin.stu.neva.ru!usenet.stanford.edu!not-for-mail From: Stephane Chazelas Newsgroups: gnu.bash.bug Subject: Re: $? is -1 Date: Fri, 5 Jul 2019 19:03:16 +0100 Lines: 32 Approved: bug-bash@gnu.org Message-ID: References: <20190705095750.46F0D125555@sint.jonkmans.nl> <20190705180316.b7pbekrixjs3m6kc@chaz.gmail.com> NNTP-Posting-Host: lists.gnu.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: usenet.stanford.edu 1562349808 6455 209.51.188.17 (5 Jul 2019 18:03:28 GMT) X-Complaints-To: action@cs.stanford.edu Cc: bashbug@jonkmans.nl, bug-bash@gnu.org, bash@packages.debian.org To: Chet Ramey Envelope-to: bug-bash@gnu.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=aETuQ2Su7iK4AOR4Ki0JQmYlCtlRJvNWr0QyvrpP5w4=; b=dz/bzBI2qXsWxAmTsF+xLfs5E9zE/g53C6zslsoF92URNSNXGmBrpxRVZKHO1yE18T Hf0tLssmh4u1k32F1+7oAcMxhIs6ru765Wdvgwf1dCErqhGS7tYA1JvpAgMlAY7r7zC/ 3MRRcxyZXNGxUG9sU4EUwPMgwsxr1o0eaGYKyY6vLaaP7wfrfdw/md9EQGRxTFt4qjdZ exBknLT4iMpvtSGQmmcT0h8PYrorrzDaXde4d9N3xWb4q7TGetWGq0GmXRbZw3YIyO80 EmPeIT6YJ24KnMzAponvKe9XOOi5BqiP/0w75Wyy4xCGr5xYcHMEVJ4kBElUhcp17rqu jbGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=aETuQ2Su7iK4AOR4Ki0JQmYlCtlRJvNWr0QyvrpP5w4=; b=ZJXpUDFgXyBftKCrZTElLtlYN3uFriB9g6W6rHc1EYYU8wFtu7dEOJnqWWbwLApiVR Qz7ha7wAgtRF4anzXxhWoPzMJBDtnzZhboytfm+AXH/yYgiNTA0pjlEMPCMADAu5Js7C oaMm/dxUS4qacmV1iPeSWjkNnvHbdQD6sRUtZaCFXHLO5+G9GQNql5q/Qleewwj0Ge3G TlMOGsNwZJ8l8c6uXwRjzp33l8F7+qgimMsi0NXpzmv8ewyLF+MjoinS+GpFbaGerNbl wx12f5ia5CPLFL6gLpIxPLbvzziQlJ4yQ6d47IqfRwz5meIarBgq6QW8c5nxJmQpAVqJ RJmA== X-Gm-Message-State: APjAAAXYdyrmMrU8ia/VXdoi+G0fdfM7eo1vyB6DClvVk6JSn/D25ri4 AWFlh5tc6fBxXtxd4KqLlok= X-Google-Smtp-Source: APXvYqwN8Xai6PvgMxprx7lWpdcQRLJ+aiqiaKFfeaXAkFGr7CV9hfta4oqZ/Ral9Ar5yGyKCZhxZw== X-Received: by 2002:a5d:6b46:: with SMTP id x6mr4978072wrw.122.1562349798745; Fri, 05 Jul 2019 11:03:18 -0700 (PDT) Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20171215 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::441 X-BeenThere: bug-bash@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Bug reports for the GNU Bourne Again SHell List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: <20190705180316.b7pbekrixjs3m6kc@chaz.gmail.com> X-Mailman-Original-References: <20190705095750.46F0D125555@sint.jonkmans.nl> Xref: csiph.com gnu.bash.bug:15081 2019-07-05 09:03:06 -0400, Chet Ramey: [...] > > Second, when ran in a subshell, the same exit status gets mapped to 255. > > While logical, as -1 gets mapped to 255, it seems inconsistent. > > ( from the manual: "The return status is the exit status of list." ) > > It's the difference between passing a status around the shell and passing > it through the waitpid() interface, which takes just eight bits. [...] Note though: $ bash -c 'f() { return "$1"; }; f -1; echo "$?"' 255 It gets mapped to 255 even though there's no waitpid(). bash also takes upon itself to truncate the number passed to exit(1) before passing it to _exit(2): $ strace -fe exit_group bash -c 'exit -1' exit_group(255) = ? There's a lot of variation between shells (and other utilities) on that front. See also: https://unix.stackexchange.com/questions/418784/what-is-the-min-and-max-values-of-exit-codes-in-linux/418802#418802 https://unix.stackexchange.com/questions/99112/default-exit-code-when-process-is-terminated/99134#99134 -- Stephane