Fun with #! (aka shebang) and filenames ending in .exe

Dan Kegel dank@kegel.com
Mon Mar 29 00:58:00 GMT 2004


Larry Hall wrote:
>>./foo.sh
>>mv foo.sh foo.exe
>>./foo.exe
>>
>>The first foo.sh works fine.  The second... well, it's entertaining.
>>I have to kill the window, ^C is ignored.
> 
> Well, ^C worked for me, though the terminal then would not respond to 
> any other input.  Maybe that's what you meant by "it's entertaining".

I wouldn't expect the same results everywhere, but when
I try it, the scroll bar goes away, and the screen is filled
with falling snow.

>>Now, I know one shouldn't do nasty tricks like that, but
>>I ran into it very innocently.  I was trying to make a distcc
>>masquerade directory on cygwin; my technique has been to
>>create shell scripts with the same name as the real app
>>that set a few variables and run a different app with the
>>original commandline as arguments.  On cygwin, the original
>>app was named something.exe, so using my usual technique, I
>>created a shell script named something.exe, and kerblooie!
> 
> Yes, this is a known issue.  It's the same old problem one would expect
> to have on a system that relies on the filename to determine what it 
> should do with the file.  You'd see something similar with a .bat/.exe 
> file combination in Windows, unless I'm misinterpreting what you're 
> saying..

Yes, except that since the exec is being done by Cygwin,
you'd expect it to maybe pay attention to the #! line
before trusting the .exe suffix.  But since #! isn't
a Posix requirement, Cygwin is well within its rights to
ignore it in this case.
(cf. http://www.in-ulm.de/~mascheck/various/shebang/ )

Anyway, my scripts now strip off .exe where appropriate
(i.e. when naming wrapper scripts) and  add the missing
.exe where appropriate (i.e. when trying to remove files),
and that works fine.

- Dan

-- 
My technical stuff: http://kegel.com
My politics: see http://www.misleader.org for examples of why I'm for regime change

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list