Rob Walker wrote:
Matthew Woehlke wrote:
Rob Walker wrote:
Saying cygwin's bash wasn't designed to handle CRLF is a lot like
saying that cygwin's bash (as previously released all these years)
wasn't designed to work with the rest of Windows. This might
actually be the case, but I don't understand the point. If you don't
want to work with Windows, why release for Windows?
Many, many other cross-platform products make allowances for CRLF
(version control systems are a prime example) to maximize
compatibility, and thereby their usefulness, on Windows. Cygwin's
recent changes (with make and bash) here has put a real crimp in my
plans to depend on cygwin for a portable build environment.
Just curious, is there a goal or strategy that drives changes like this?
Speed?
I was actually asking a larger question. There's obviously value in
handling CRLF invisibly, and value in having speed. When evaluating
which is _more_ valuable, what are the inputs?
Clearly speed is valued over making CRLF work in binmode mounts, which
was never supposed to be the case in the first place.
But seriously, dude. If handling CRLF starts to approach in complexity
what the rest of bash does, CRLF handling should probably be rewritten.
I believe that's what igncr *does*. IOW you already got this wish.
I think using 'igncr' should satisfy your complaints. If it doesn't,
you need to tell use WHY (which, you'll notice, the OP failed to do).
So far, igncr hasn't worked for me either. I think this is because I
don't know how to use it.
This is the simple shell script I'd like to have work (lines separated
by CRLF):
#!/bin/bash
echo helloworld
I have c:/tmp mounted at /tmp, where I put my test script (called
helloworld.sh):
[EMAIL PROTECTED]> pwd
/tmp
[EMAIL PROTECTED]> mount
C:\Documents and Settings on /home type system (binmode)
C:\apps\cygwin\bin on /usr/bin type system (binmode)
C:\apps\cygwin\lib on /usr/lib type system (binmode)
C:\apps\cygwin on / type system (binmode)
C:\tmp on /tmp type system (binmode)
A: on /a type system (binmode)
C: on /c type system (binmode)
D: on /d type system (binmode)
When I run this script, this is what I see (when run from the "Cygwin
Bash Shell" DOS box):
[EMAIL PROTECTED]> bash --version
GNU bash, version 3.1.17(9)-release (i686-pc-cygwin)
Copyright (C) 2005 Free Software Foundation, Inc.
[EMAIL PROTECTED]> ./helloworld.sh
hello world
: command not foundne 3:
Ok, no surprises.
I also tried this way:
[EMAIL PROTECTED]> bash -O igncr
[EMAIL PROTECTED]> ./helloworld.sh
hello world
: command not foundne 3:
This won't work; shopts are not inherited. You'll need to set it on
environment startup if you're going with this approach (check the
archives for how).
I also tried editing the script (which I fear breaks it for non 3.x
users of bash):
#!/bin/bash -O igncr
echo helloworld
Is there any chance 'which bash' is not /bin/bash or /usr/bin/bash?
Otherwise this seems strange, but not being a shebang guru I cannot
think of why it shouldn't work.
Did you try adding 'shopt igncr' to the script? This won't (shouldn't,
at least!) break it for non-3.1-9 users (and if you stick a 2>/dev/null
after it, won't print errors).
What does work for me is:
[EMAIL PROTECTED]> bash -O igncr ./helloworld.sh
hello world
Yup, that ought to work... Obviously it's not the best solution, though.
--
Matthew
"What's Cygwin?" you ask.
'Tis mostly absurd software
Concerning hippos.
--
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/