delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2016/08/27/07:41:14

X-Recipient: archive-cygwin AT delorie DOT com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:mime-version:from:date:message-id:subject:to
:content-type; q=dns; s=default; b=yX+8frK605ghgzFigXrIFnF+iGrz6
sFCE3lVGmsbvZFaGVdx1BkKsni8iGfQHKEZxt31H/O65k4UV4dHxy/5YerpyX3ZD
lgceGbc2xrCz58Kl5V7wfcJ/cHnnWwQPWBVfQkgKr/qSqQiMthPvQoYG9ce+z5el
qSA/k6wu/Uq0Ys=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:mime-version:from:date:message-id:subject:to
:content-type; s=default; bh=JAsCP3E6tFN6qtyNBxulOLJIjX4=; b=eH+
Df6a5A++ajDo0sqz74SwyaiHgJ/YP1NWbpa2glyTvdzQE30wfunb4MYf0S+yWWCb
e798NRYG2QygVUXmip4bbiSKKInY4+/uFGQTYVnkM+ipJ8XXx0RIRLorqxz35ibf
GSvzOTPUYg25oWwmAlJgfGylIdgeSrQDDKb58nQ8=
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
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
Authentication-Results: sourceware.org; auth=none
X-Virus-Found: No
X-Spam-SWARE-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=guy, surprising
X-HELO: mail-it0-f47.google.com
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=fWqUh1X9tTiV6D5iX7bhX0Tzj/s8hVbqrMHWSMjbGoc=; b=ODvycAK8XHVStceLhy63sNIdYMOtkHhjSik75c0bqR36gy/103rpvCVLfzGiv88g8W KhyfFyqBE9A2j2dlLYP5nzM/Dt6iiP+qqWnaggEiBaPrZ+S9qSeA+GsQp9yuZ4vmpZ1K IKJaqK4Y/WGJHZyMHCMNi434+2eeVktEeNGdFwKH48tmarvErZzzC0c2gaErpx/SWdpk RvPycXDwDyl7xcTgvlUKeyu30EQubyRaHwWO7cqLA1I1UHnWYIZnWikzoym9Z03FjHrG 3xLLlzYa2SIvWoDF3Q1kVsSrpkakN4I/t/29n/FNkPgSxQXn675k5GooZVQoPsETuR01 Kguw==
X-Gm-Message-State: AE9vXwNjc/90vWYUlzp9rzZ5TnfcK/bP2mgA2epqXKhvuT4e7RBxbPqclllswbkAkKazAam4SZqBPbxIwFrTdw==
X-Received: by 10.107.130.81 with SMTP id e78mr10381792iod.137.1472298050914; Sat, 27 Aug 2016 04:40:50 -0700 (PDT)
MIME-Version: 1.0
From: Gene Pavlovsky <gene DOT pavlovsky AT gmail DOT com>
Date: Sat, 27 Aug 2016 14:40:50 +0300
Message-ID: <CAPTiy3PE0gZ-hpvQbxVkfaZfxtppDx7RG85WtuigpnL54WZbDA@mail.gmail.com>
Subject: bash: igncr shell option breaks my PS1 prompt
To: cygwin AT cygwin DOT com
X-IsSubscribed: yes

Apparently the latest bash in Cygwin modified the read builtin to use
Cygwin-specific shell option igncr to control ignoring \r characters
in the input (still not clear if that ignores \r\n sequences, or \r
followed by anything else will be also ignored).
This broke a mysql database backup script I had - specfiically reading
output of `show databases` sql command. Since I never used the `igncr`
shell option, with the latest bash update the `read` built-in reads
the database names with \r at the end.
I considered enabling the `igncr` option everywhere, by declaring a
SHELLOPTS=igncr Windows environment variable, however immediately it
created an issue with my two-line PS1 prompt, which contains \n.

# PS1='\e[1;30m\D{%T}\e[m$(test \j -ne 0 && echo "
\e[1;37mj:\j\e[m")${STY:+ \e[1;32m${STY%%.*}\e[m} \e[1;33m\w\e[m\n# '
14:32:22 /usr/local/bin
# set -o igncr
bash: command substitution: line 1: syntax error near unexpected token `)'
bash: command substitution: line 1: `test 0 -ne 0 && echo " j:0")'
14:32:24{STY:+ } /usr/local/bin
# set +o igncr
14:32:26 /usr/local/bin
#

What's wrong with this? It works fine on a Linux box.
I'm considering rolling back bash until I can figure this out.

I really think it was an unwise move to hastily modify the `read` bash
built-in's behavior without a lot of testing. And basically now I
should either put Cygwin-specific checks (if cygwin, then set igncr
shell option) in all of my scripts that *might* be affected, or be
forced to set igncr shell option system-wide, which I'd prefer not to
do.
Can't imagine I'm the only guy whose scripts might be getting weird
problems now. Unless everybody been using `igncr` shell option (off by
default) for ages, and I'm the only guy who just heard about that?
Personally I don't like the `igncr` option's behavior. I want my bash
scripts to fail if somebody saved (or checked out from git) with CRLF
line endings. If it happens, I will notice immediately and then fix
them. Don't want to have bash scripts with CRLF line endings lurking
on my system, pretending to be nice - then one day I'll copy one to my
Linux box where it will break, surprising me more than when I first
created it or checked out from git.

Regards,
--Gene

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


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