On Wed, Jan 13, 2016 at 11:23:34AM -0500, Chet Ramey wrote: > On 1/13/16 9:04 AM, Greg Wooledge wrote: > > 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. > > No, it isn't. The execve fails with ENOENT, so bash just prints an error > message containing the interpreter name, which Ludo is reporting is > truncated.
Ah. You're right, and I should have double-checked Ludo's understanding of the code before responding. I assumed Ludo's assertion was correct, but it's not. The "fallback code" is only executed when execve() fails with ENOEXEC.