www.delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2010/08/04/19:43:54

X-Recipient: archive-cygwin AT delorie DOT com
X-SWARE-Spam-Status: No, hits=-0.8 required=5.0 tests=AWL,BAYES_20,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,TW_YG,T_TO_NO_BRKTS_FREEMAIL
X-Spam-Check-By: sourceware.org
MIME-Version: 1.0
In-Reply-To: <2BF01EB27B56CC478AD6E5A0A28931F2013024D9@A1DAL1SWPES19MB.ams.acs-inc.net>
References: <2BF01EB27B56CC478AD6E5A0A28931F2013024D9 AT A1DAL1SWPES19MB DOT ams DOT acs-inc DOT net>
Date: Wed, 4 Aug 2010 10:36:55 -0600
Message-ID: <AANLkTi=W1mfktf7Nri6B=fYPHTxwSqa-6O3tDuQL6KnU@mail.gmail.com>
Subject: Re: incompatible environment variable names
From: Steven Collins <spc DOT for DOT nbc AT gmail DOT com>
To: cygwin AT cygwin DOT com
X-IsSubscribed: yes
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT 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

On Wed, Aug 4, 2010 at 10:23, Nellis, Kenneth wrote:
> I came across an interesting (IMHO) incompatibility between
> Windows and bash environment variable names.
>
> I have a Windows environment variable as such:
>
> C:\>set QNX_VISUAL_C++_PATH
> QNX_VISUAL_C++_PATH=C:\Program Files\Orbital Qnx VisualC++ IDE
>
> So, Windows has no problem with + symbols in variable names, but
> bash does, kinda sorta:
>
> Cygwin> printenv QNX_VISUAL_C++_PATH
> C:\Program Files\Orbital Qnx VisualC++ IDE
> Cygwin> cygpath "$QNX_VISUAL_C++_PATH"
> ++_PATH
> Cygwin> echo "$QNX_VISUAL_C++_PATH"
> ++_PATH
> Cygwin> echo ${QNX_VISUAL_C++_PATH}
>
> Cygwin> cygpath "$(printenv QNX_VISUAL_C++_PATH)"
> /cygdrive/c/Program Files/Orbital Qnx VisualC++ IDE
> Cygwin>
>
> So, it seems that I can only access the value of the variable
> through printenv, and then cygpath does what I need, but I can't
> then assign it back to the environment variable:
>
> Cygwin> export QNX_VISUAL_C++_PATH="$(cygpath "$(printenv QNX_VISUAL_C++_PATH)")"
> -bash: export: `QNX_VISUAL_C++_PATH=/cygdrive/c/Program Files/Orbital Qnx VisualC++ IDE': not a valid identifier
> Cygwin>
>
> I probably need to give up on this, but felt like sharing my misery.
>
> --Ken Nellis
>

From the bash man page:

<bashManPage>
<snip/>

DEFINITIONS
       The following definitions are used throughout the rest of this document.
       blank  A space or tab.
       word   A sequence of characters considered as a single unit by
the shell.  Also known as a token.
       name   A word consisting only of alphanumeric characters and
underscores, and beginning with an alphabetic character or an
underscore.  Also referred to as an identifier.

<snip/>


PARAMETERS
       A parameter is an entity that stores values.  It can be a name,
a number, or one of the special characters listed below under Special
Parameters.  A variable is a parameter denoted by a name.  A variable
has a value and zero or more attributes.  Attributes are  assigned
using
       the declare builtin command (see declare below in SHELL BUILTIN
COMMANDS).

<snip/>
</bashManPage>

Hench bash does not support the plus character in a variable name and
no amount of finagling is going to fix it.

--
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