[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Hash-bang line length
From: |
Greg Wooledge |
Subject: |
Re: Hash-bang line length |
Date: |
Wed, 13 Jan 2016 09:04:41 -0500 |
User-agent: |
Mutt/1.4.2.3i |
On Wed, Jan 13, 2016 at 02:52:08PM +0100, Ludovic Courtès wrote:
> Sure, but the fact that it???s smaller than that of the kernel Linux is
> problematic: when a hash-bang line > 127 chars is encountered, ???execve???
> fails with ENOENT, so Bash???s fallback code is executed, fails as well,
> but it prints a misleading error message with an even more truncated
> hash-bang line.
Let's suppose bash is changed to read a shebang line of unlimited length.
In your scenario, the script with the 150 character shebang fails at the
kernel level with ENOENT, so bash's fallback code runs, and the script
is executed by a new instance of bash.
This just masks the problem. Now, your script ONLY works when you
run it from a bash shell. Not from any other shell, not via C's exec(),
not via find -exec, etc.
That said, it's not bash's place to try to guess how the host system's
kernel will handle the shebang. I certainly wouldn't expect bash to
tell me "Hey, this is Linux, so your shebang won't work because it's
more than 127 bytes."
I'm not sure what error message or behavior you think bash should employ
in this scenario. I don't see any clear "best" choice here.
Re: Hash-bang line length, Chet Ramey, 2016/01/13