Date: Tue, 13 May 1997 14:11:59 +1000 (EST) From: Phil Chadwick <syspmc@dtir.qld.gov.au> To: FreeBSD-gnats-submit@FreeBSD.ORG Subject: bin/3587: Bug report for FreeBSD 2.2.x /bin/sh Message-ID: <199705130411.OAA14680@goblin.devetir.qld.gov.au> Resent-Message-ID: <199705130420.VAA28034@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 3587 >Category: bin >Synopsis: FreeBSD 2.2.x /bin/sh functions return wrong exit status >Confidential: no >Severity: serious >Priority: high >Responsible: freebsd-bugs >State: open >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon May 12 21:20:01 PDT 1997 >Last-Modified: >Originator: Phil Chadwick >Organization: Department of Training & Industrial Relations >Release: FreeBSD 2.2.x >Environment: FreeBSD 2.2.x >Description: FreeBSD 2.2.x /bin/sh functions don't return exit values as expected with a Bourne (compatible) shell. Traditional Bourne shells implement the "return" command as follows (this from the Solaris 2.5 man page): return [ n ] Causes a function to exit with the return value specified by n. If n is omitted, the return status is that of the last command executed. The FreeBSD 2.2.x /bin/sh doesn't does not, when n is omitted, return the status of the last command executed. This bug was not present in 2.1.5, nor 2.1.7. I discovered it while running the configure scripts for Sam Leffer's HylaFAX and tiff library. >How-To-Repeat: Script started on Tue May 13 08:33:18 1997 $ uname -a FreeBSD scrubber.devetir.qld.gov.au 2.2-STABLE FreeBSD 2.2-STABLE #0: Thu May 1 18:41:39 EST 1997 wjh@scrubber.devetir.qld.gov.au:/usr/src/sys/compile/SCRUBBER i386 $ set PS1=$ PS2=> PATH=/bin:/usr/bin:/usr/local/bin IFS= $ cat bug.sh # fail() { false return # /bin/sh returns zero, wrong. } fail status=$? case $status in 0) echo "shell broken, return status is $status" ;; *) echo "shell OK, return status is $status" ;; esac $ /bin/sh bug.sh shell broken, return status is 0 $ /usr/local/bin/bash bug.sh shell OK, return status is 1 $ /usr/local/bin/ksh bug.sh shell OK, return status is 1 $ ^D Script done on Tue May 13 08:34:01 1997 >Fix: Use bash or ksh Phil -- Phil Chadwick Email: syspmc@dtir.qld.gov.au ,-_|\ Supervisor, UNIX Support Phone: +61 7 3247 9239 / * Department of Training Fax: +61 7 3247 9111 \_,-._/ and Industrial Relations v >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199705130411.OAA14680>