Date: Wed, 26 Jan 2000 18:37:59 -0800 (PST) From: ryand@amazon.com To: freebsd-gnats-submit@FreeBSD.org Subject: bin/16393: /bin/sh doesn't strip comments on shebang line Message-ID: <20000127023759.19A7214E20@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 16393 >Category: bin >Synopsis: /bin/sh doesn't strip comments on shebang line >Confidential: no >Severity: critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Jan 26 18:40:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Ryan Davis >Release: 3.3-STABLE (with latest /bin/sh) >Organization: Amazon.com >Environment: FreeBSD qa-tools.amazon.com 3.3-STABLE FreeBSD 3.3-STABLE #0: Tue Jan 11 12:50:31 PST 2000 root@qa-tools.amazon.com:/usr/src/sys/compile/RWD_BSD_v3 i386 >Description: Basically, if I follow the suggestions in the perl book to make portably executable scripts, I must use a shebang hack where the perl script starts being executed as a sh script. sh will pass it off to perl. Currently sh chokes on the # after -- as the executable. [503] x.pl #: Can't open # What should be happening is sh strips everything including and after the #. With no args the file should be executed in the same sh. Then the eval/exec will transfer responsibility to perl. This works on DEC UNIX, linux, and several others. >How-To-Repeat: Run the following script: #!/bin/sh -- # -*- perl -*- eval "exec perl $0 -S ${1+'$@'}" if 0; print "1+1=", (1+1), "\n"; >Fix: >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000127023759.19A7214E20>