GNU bug report logs - #24055
Bug: #!/usr/bin/env gives poor error message for DOS line-endings

Previous Next

Package: coreutils;

Reported by: Simon Richard Clarkstone <src <at> corefiling.com>

Date: Fri, 22 Jul 2016 22:23:02 UTC

Severity: normal

Done: Pádraig Brady <P <at> draigBrady.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Pádraig Brady <P <at> draigBrady.com>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#24055: closed (Bug: #!/usr/bin/env gives poor error message
 for DOS line-endings)
Date: Fri, 22 Jul 2016 22:59:01 +0000
[Message part 1 (text/plain, inline)]
Your message dated Fri, 22 Jul 2016 23:57:58 +0100
with message-id <5792A4F6.8080901 <at> draigBrady.com>
and subject line Re: bug#24055: Bug: #!/usr/bin/env gives poor error message for DOS line-endings
has caused the debbugs.gnu.org bug report #24055,
regarding Bug: #!/usr/bin/env gives poor error message for DOS line-endings
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
24055: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=24055
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Simon Richard Clarkstone <src <at> corefiling.com>
To: bug-coreutils <at> gnu.org
Subject: Bug: #!/usr/bin/env gives poor error message for DOS line-endings
Date: Fri, 22 Jul 2016 21:39:58 +0100
I have found a poor error message in env (GNU coreutils) 8.23, on FC22.

---

I created the following executable file, with a DOS line-end:

#!/usr/bin/env sh

When run, it displays the following error message on my terminal:

: No such file or directory

This error message is cryptic.  However, if you process stderr through 
`cat -v` to display nonprintable characters, you find the error message 
has a CR in it:

/usr/bin/env: sh^M: No such file or directory

and the CR caused the second half of the error message to over-write the 
first half when displayed on-screen.

---

To diagnose the problem I had to use strace, so IMO this error message 
could be improved by expanding out control characters.  For example see 
how bash handles an analogous situation, with the script:

#!/usr/bin/sh

Which displays:

bash: ./tmp.sh: /usr/bin/sh^M: bad interpreter: No such file or directory

Here, bash has expanded out the ^M before displaying it, showing that 
something is stuck on the end of the #! line.

-- 
Simon Richard Clarkstone, CoreFiling Limited
Software Engineer, Data Modelling
http://www.corefiling.com/
Phone: +44-1865-203192


[Message part 3 (message/rfc822, inline)]
From: Pádraig Brady <P <at> draigBrady.com>
To: Simon Richard Clarkstone <src <at> corefiling.com>, 24055-done <at> debbugs.gnu.org
Subject: Re: bug#24055: Bug: #!/usr/bin/env gives poor error message for DOS
 line-endings
Date: Fri, 22 Jul 2016 23:57:58 +0100
On 22/07/16 21:39, Simon Richard Clarkstone wrote:
> I have found a poor error message in env (GNU coreutils) 8.23, on FC22.
> 
> ---
> 
> I created the following executable file, with a DOS line-end:
> 
> #!/usr/bin/env sh
> 
> When run, it displays the following error message on my terminal:
> 
> : No such file or directory
> 
> This error message is cryptic.  However, if you process stderr through 
> `cat -v` to display nonprintable characters, you find the error message 
> has a CR in it:
> 
> /usr/bin/env: sh^M: No such file or directory

That's fixed by the new file name quoting in coreutils 8.25.
The new output is:

/usr/bin/env: ‘sh\r’: No such file or directory

thanks,
Pádraig.


This bug report was last modified 8 years and 301 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.