shopt igncr not working
Matthew Woehlke
mwoehlke@tibco.com
Fri Oct 13 15:32:00 GMT 2006
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):
>
> rwalker@maiden> pwd
> /tmp
> rwalker@maiden> 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):
>
> rwalker@maiden> bash --version
> GNU bash, version 3.1.17(9)-release (i686-pc-cygwin)
> Copyright (C) 2005 Free Software Foundation, Inc.
> rwalker@maiden> ./helloworld.sh
> hello world
> : command not foundne 3:
Ok, no surprises.
> I also tried this way:
>
> rwalker@maiden> bash -O igncr
> rwalker@maiden> ./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:
>
> rwalker@maiden> 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/
More information about the Cygwin
mailing list