From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) by sourceware.org (Postfix) with ESMTPS id 738DD398301B for ; Fri, 20 Nov 2020 14:52:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 738DD398301B Received: by mail-wr1-x436.google.com with SMTP id k2so10355559wrx.2 for ; Fri, 20 Nov 2020 06:52:14 -0800 (PST) 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) Received: from jvdspc.jvds.net ([37.110.218.60]) by smtp.gmail.com with ESMTPSA id 89sm5578399wrp.58.2020.11.20.06.52.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Nov 2020 06:52:11 -0800 (PST) Received: from jvdspc.jvds.net (localhost [127.0.0.1]) by jvdspc.jvds.net (8.15.2/8.15.2) with ESMTPS id 0AKEqAwO043717 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT) for ; Fri, 20 Nov 2020 14:52:10 GMT Received: (from jvd@localhost) by jvdspc.jvds.net (8.15.2/8.15.2/Submit) id 0AKEq9CG043716; Fri, 20 Nov 2020 14:52:09 GMT X-Authentication-Warning: jvdspc.jvds.net: jvd set sender to jason.vas.dias@gmail.com using -f From: "Jason Vas Dias" To: cygwin@cygwin.com Subject: BUG: command invocation misinterpreted as variable setting, SOMETIMES. Reply-To: "Jason Vas Dias" Date: Fri, 20 Nov 2020 14:52:09 +0000 Message-ID: MIME-Version: 1.0 Content-Type: text/plain 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@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Nov 2020 14:52:16 -0000 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 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