delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2020/11/20/09:52:58

X-Recipient: archive-cygwin AT delorie DOT com
DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E321E3984067
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com;
s=default; t=1605883938;
bh=W4t6cLjyx8cfdmINbqtYHdpGfKNUKUpIIZW/caVqDo4=;
h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post:
List-Help:List-Subscribe:From:Reply-To:From;
b=DWGPL2F1ZHJfLNObbw2cMVLBxwpLYiNEQ2lKs90y9nnAX/naN3GG/ZSo9TzD+BsNg
kBag5KncjLALRYkN99d46V9qeNYzwevLe4vdkDzfMgpZR8+Ab5Sjc7T9bGUp4uCReL
UXHmgR6tYXTk/BZ8SUfL5TtslDjMhA+C8VQIAn3k=
X-Original-To: cygwin AT cygwin DOT com
Delivered-To: cygwin AT cygwin DOT com
DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 738DD398301B
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:from:to:subject:reply-to:date:message-id
:mime-version;
bh=Gp8KrlpyRPK/REAT5BzPYQFIHWYGeqLoVx29rAI4dNs=;
b=ZU4kcfQpTOzLs8G51ZKs7EG8vcZ8lPsxwMQQsDuAMVasMnwsIqHnI8qCUKnNMTAoTo
EE/nyGKKWUtrE6ICLamZIG1UfXN5S0kQt9z/++wfODVi1ij9j+WlTiOwDy7FVfRIHFma
VgLxt24vBDOoLYia85XNVb7pISEeCVYqNP4T9cLSk6AU5MGyV9wwJoCVSb6FRRdjam0Q
pBhDSvkPNMPnNZD2QVC7GAKk3rbM6N+3oBCyDFf6bXNUxnT0wdnrb99BBu+BfgcPxKff
OUvKte7GJyCLM8CFZicVCJCjSlquuxTo5QnBdJpGYq5CkFOIYP21x90B5f0HUNPR8lXH
xoeQ==
X-Gm-Message-State: AOAM531j2VhUT645a0Nq4UHaVIt+yZOc3WKNAiqfFGJxBL5/jiUCWWib
1ukel4RDXZ+ZsE+HP0TwFBeWgbOzn98=
X-Google-Smtp-Source: ABdhPJxeno/ECilMpXK67CPmJLilA4bIaCVqkW5LpOTAvTxd6qbxVCYQOvmLPUznz7+YAmZ8frrD6Q==
X-Received: by 2002:adf:a343:: with SMTP id d3mr16518300wrb.91.1605883932707;
Fri, 20 Nov 2020 06:52:12 -0800 (PST)
X-Authentication-Warning: jvdspc.jvds.net: jvd set sender to
jason DOT vas DOT dias AT gmail DOT com using -f
To: cygwin AT cygwin DOT com
Subject: BUG: command invocation misinterpreted as variable setting,
SOMETIMES.
Date: Fri, 20 Nov 2020 14:52:09 +0000
Message-ID: <hh4klkully.fsf@jvdspc.jvds.net>
MIME-Version: 1.0
X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00, DKIM_SIGNED,
DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, FROM_MISSP_FREEMAIL,
RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS,
TXREP autolearn=ham autolearn_force=no version=3.4.2
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on
server2.sourceware.org
X-BeenThere: cygwin AT cygwin DOT com
X-Mailman-Version: 2.1.29
List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com>
List-Archive: <https://cygwin.com/pipermail/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-request AT cygwin DOT com?subject=help>
List-Subscribe: <https://cygwin.com/mailman/listinfo/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe>
From: Jason Vas Dias via Cygwin <cygwin AT cygwin DOT com>
Reply-To: Jason Vas Dias <jason DOT vas DOT dias AT gmail DOT com>
Sender: "Cygwin" <cygwin-bounces AT cygwin DOT com>

Good day -

 I am using a fairly up-to-date Cygwin:
   release: cygwin
   arch: x86_64
   setup-timestamp: 1603379981
   include-setup: setup <2.878 not supported
   setup-minimum-version: 2.895
   setup-version: 2.905
 , bash version : 4.4.12(3)-release
 on Windows 10 :
   Edition	Windows 10 Pro
   Version	20H2
   OS build	19042.630
   Experience	Windows Feature Experience Pack 120.2212.31.0
 , which I am forced to use for a work related Visual Studio project,
 , running in a Qemu/KVM VM under Fedora-32 on a modern X86_64 Dell XPS
 laptop, and am experiencing some strange and disconcerting behaviour:

 I am a complete novice Windows user, I have used only BSD / Solaris
 / AIX / HP-UX / MacOSX / z/OS or Linux since 1990, so I am an advanced UNIX
 shell script user & C/C++ + LISP + PERL programmer (I prefer LISP nowadays).

 I have to run a script with an alternate setting of $HOME, so I do:

   $ HOME="C:\\USERS\\JVD\\" sbcl --script "C:\\${path-to-my-script}.lisp"
   
 This works, but now:

   $ cd ~
   -bash: cd: "C:\\USERS\\JVD\\" sbcl --script "C:\\${path-to-my-script}.lisp": No such file or directory
   $ echo $HOME
   /home/JVD

 This is very weird! "$HOME" is still set to its /etc/bash.bashrc set
 default, but evaluation of 'echo ~', which I thought should be
 equivalent to 'echo $HOME', yields the last command to be prefixed
 by a command-specific HOME=... setting .

 I think this is a bug. Since setting HOME=... has no effect now,
 (it still has its correct value),
 use of '~' is now effectively disabled for this shell session .

 What is 'echo ~' doing other than 'echo $HOME' ?

 This is a serious bug to me. I also have some unanswerable questions niggles:
 
 ( where ${path-to-my-script} is the actual name of my script file, not
   an env var.
   SBCL is the Windows build of Steel Bank Common Lisp, installed under
   "C:\\Program\ Files\\", which does not use the Cygwin libraries,
   and accepts Windows style paths as 'native-namestring's , while
   converting pathnames to the 'c:/x/y/z' form with 'namestring'.
   
   Incidentally, can anyone enlighten me as to why a Windows path
   cannot be specified like: "C:\\Program\ Files\ \(x86\)\\" and
   used successfully in Cygwin ?
   Or why a path like that must be specified like:
      /cygdrive/c/Program\ Files\ \(x86\)/...
   on the command line to work in bash completion,  but must be specified like:
      /cygdrive/c/Program Files (x86)/...
   to work in $PATH ? It would be nice to have some consistency here,
   so that scriptlets like the commented out section will work:

function CYGP() # convert windows path to Cygwin path
{  if (( $# < 1 )); then
      echo "$FUNCNAME: expects <windows path list> argument." >&2;
      return 1;
   fi
   declare IFS=';';
   declare -a P=($1);
   declare p='' path='';
   declare -l lcdl;
   unset IFS;
   for p in "${P[@]}"; do
      p="${p//\\//}";
#      while [[ "$p" =~ ^(.*[^\\])?([][[:space:])(}{])(.*)$ ]]; do
#         p="${BASH_REMATCH[1]}\\${BASH_REMATCH[2]}${BASH_REMATCH[3]}";
#      done
#
#     I can't understand why Cygwin can't handle escaped spaces in $PATH, but it can't!
#      
      if [[ "$p" =~ ^([a-zA-Z])[\:](.*)$ ]]; then
         lcdl="${BASH_REMATCH[1]}";
         p="/cygdrive/${lcdl}${BASH_REMATCH[2]}";
      fi
      path="$path${path:+:}$p";
   done
   echo "$path";
}
   It would be nice to be able to uncomment that section in CYGP,
   which does escape all occurences of '[](){}' or [[:space:]]
   correctly, but if used in a $PATH setting, those characters
   cannot be escaped, otherwise that path is not searched. Why?
)
 
  Clarification on the above issues and an eventual fix for them
  would be much appreciated.

  Since I am running Windows under a Linux VM, solutions like
  MSYS2 or Windows Services for Linux (WSL), which seem to
  require one to install a complete Linux distribution under
  Windows, are overkill / sledgehammer approaches for me -
  I don't have the diskspace . Windows & Cygwin installed in only 16GB,
  but Visual Studio consumes @ 50GB, and that's enough Windows
  binaries for me !

  Any advice gratefully received.

Thanks & Best Regards,
Jason



 

 



   

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

- Raw text -


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