X-Spam-Check-By: sourceware.org Message-ID: <452F1F4A.2050705@qualcomm.com> Date: Thu, 12 Oct 2006 22:08:26 -0700 From: Rob Walker User-Agent: Thunderbird 1.5.0.7 (Windows/20060909) MIME-Version: 1.0 To: cygwin AT cygwin DOT com Subject: Re: shopt igncr not working References: <1160655422743 DOT antti DOT nospam DOT 1605718 DOT wGO_WJ9D1NlId3tB-z6Qig AT luukku DOT com> <20061012123406 DOT GA30908 AT trixie DOT casa DOT cgf DOT cx> <452EA386 DOT 9010201 AT qualcomm DOT com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Matthew Woehlke wrote: > Rob Walker wrote: >> Christopher Faylor wrote: >>> On Thu, Oct 12, 2006 at 03:17:02PM +0300, Antti Tyrv?inen wrote: >>> >>>> Hi! >>>> >>>> Installed latest cygwin and I met problems with bash and scripts >>>> which are in DOS format. >>>> >>>> $ bash --version >>>> GNU bash, version 3.1.17(9)-release (i686-pc-cygwin) >>>> Copyright (C) 2005 Free Software Foundation, Inc. >>>> >>>> I read the mailing lists and I also tried to add ' shopt -s >>>> igncr;#' in the beginning of the script, but it didn't work. In my >>>> opinion, this is bad solution if I have to edit all my existing >>>> scripts. >>>> >>>> All works fine with bash 3.1.6. >>>> >>>> What I should do? >>>> >>>> a) install bash 3.1.6 and wait for new >>>> b) install bash 3.1.9. and convert all my scripts to UNIX format >>>> >>> >>> b), i.e., use the tool the way it was designed to be used. >>> >>> >> 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? But seriously, dude. If handling CRLF starts to approach in complexity what the rest of bash does, CRLF handling should probably be rewritten. > > 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 AT maiden> pwd /tmp rwalker AT 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 AT maiden> bash --version GNU bash, version 3.1.17(9)-release (i686-pc-cygwin) Copyright (C) 2005 Free Software Foundation, Inc. rwalker AT maiden> ./helloworld.sh hello world : command not foundne 3: I also tried this way: rwalker AT maiden> bash -O igncr rwalker AT maiden> ./helloworld.sh hello world : command not foundne 3: I also tried editing the script (which I fear breaks it for non 3.x users of bash): #!/bin/bash -O igncr echo helloworld With this, I see: rwalker AT maiden> ./helloworld.sh /usr/bin/bash: - : invalid option Usage: /usr/bin/bash [GNU long option] [option] ... /usr/bin/bash [GNU long option] [option] script-file ... GNU long options: --debug --debugger --dump-po-strings --dump-strings --help --init-file --login --noediting --noprofile --norc --posix --protected --rcfile --restricted --verbose --version --wordexp Shell options: -irsD or -c command or -O shopt_option (invocation only) -abefhkmnptuvxBCHP or -o option What does work for me is: rwalker AT maiden> bash -O igncr ./helloworld.sh hello world Of course, this doesn't help me for nested scripts that call each other without using "bash". -Rob -- 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/