On Wed, 16 Apr 2008, Luke Kendall wrote: > We have the Ici scripting language installed on Windows. Ici expects a > directory called "ici" to exist alongside, where various libraries are > installedd to provide extra functionality. > > Unfortunately, under Cygwin, if w try to run the command "ici" we get > the error "ici: command not found", because Cygwin chooses to try to > execute the directory instead of the .exe:
This behavior (preferring the unadorned file name to the .exe) has been in existence for a while (at least a year). We relied on the old behavior by having a script and a .exe with the same name (and expecting the .exe to be invoked on Windows/Cygwin). I remember we've had to work around this issue when the change happened, by prepending the following to our script: [ -x "$0.exe" ] && exec "$0.exe" "$@" > $ /opt/bin/ici /cygdrive/x/bin/script/cfnhdr > bash: /opt/bin/ici: is a directory > $ ls -ld /opt/bin/ici > drwxr-xr-x 1 luke Domain Users 0 Oct 17 2005 /opt/bin/ici > $ ls -ld /opt/bin/ici.* > -rwxr-xr-x 1 luke Domain Users 233503 Apr 18 2000 /opt/bin/ici.dll > -rwxr-xr-x 1 luke Domain Users 24576 Jan 29 2003 /opt/bin/ici.exe > > I tried naming the ici directory Ici but it made no difference. Try also CYGWIN="$CYGWIN check_case:strict" (while the code is still in the DLL) or managed mounts... The latter won't work unless ici.exe is a Cygwin program. > The directory /opt/bin is mounted like so: > $ mount > \\samba\syncopt\microsoft.x86.win\bin on /opt/bin type system (textmode,exec) > > Using binmode doesn't help. Is this a bug, that bash tries to execute a > directory even when there's an executable (with an implicit .exe suffix, > naturally) of the same name in existence ? No, this is expected behavior (if you search through bash release announcements, you should be able to see the exact point at which the change happened). > If not, can anyone suggest a workaround? Other than renaming the directory or using a wrapper script, no. > I can't just append a .exe to the #!/opt/bin/ici shell wrapper since > then the scripts wouldn't run from Unix. How do these scripts *ever* run from Unix? Unix would definitely not be aware of the .exe suffix, and would always attempt to execute /opt/bin/ici, which, as you say, is a directory. Do you have a /opt/bin/ici script as well? In any case, whatever solution you use to make it work from Unix should work on Cygwin as well. > Is there a bash option that controls this, maybe (I couldn't see one)? There is no bash option to control this, AFAIK. Igor -- http://cs.nyu.edu/~pechtcha/ |\ _,,,---,,_ [EMAIL PROTECTED] | [EMAIL PROTECTED] ZZZzz /,`.-'`' -. ;-;;,_ Igor Peshansky, Ph.D. (name changed!) |,4- ) )-,_. ,\ ( `'-' old name: Igor Pechtchanski '---''(_/--' `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-. Meow! "That which is hateful to you, do not do to your neighbor. That is the whole Torah; the rest is commentary. Go and study it." -- Rabbi Hillel -- 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/