delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2006/10/13/01:08:43

X-Spam-Check-By: sourceware.org
Message-ID: <452F1F4A.2050705@qualcomm.com>
Date: Thu, 12 Oct 2006 22:08:26 -0700
From: Rob Walker <rwalker AT qualcomm DOT com>
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> <egmbf1$9v6$1 AT sea DOT gmane DOT org>
In-Reply-To: <egmbf1$9v6$1@sea.gmane.org>
X-IsSubscribed: yes
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
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/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019