delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2011/08/25/13:46:29

X-Recipient: archive-cygwin AT delorie DOT com
X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS,TW_RX,TW_YG
X-Spam-Check-By: sourceware.org
To: cygwin AT cygwin DOT com
From: Andrew DeFaria <Andrew DOT DeFaria AT tellabs DOT com>
Subject: Re: Does not work well: rlwrap + rxvt + cmd
Date: Thu, 25 Aug 2011 10:45:48 -0700
Lines: 75
Message-ID: <j361od$vsq$1@dough.gmane.org>
References: <1314198447 DOT 17029 DOT 140258133233741 AT webmail DOT messagingengine DOT com> <j3360e$6au$1 AT dough DOT gmane DOT org> <1314201141 DOT 31858 DOT 140258133254297 AT webmail DOT messagingengine DOT com> <4E551F18 DOT 4020402 AT cs DOT umass DOT edu> <1314258683 DOT 16270 DOT 140258133521969 AT webmail DOT messagingengine DOT com>
Mime-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:6.0) Gecko/20110812 Thunderbird/6.0
In-Reply-To: <1314258683.16270.140258133521969@webmail.messagingengine.com>
X-Stationery: 0.7.5
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 8/25/2011 12:51 AM, Ronald Fischer wrote:
> On Wed, 24 Aug 2011 11:56 -0400, "Eliot Moss"<moss AT cs DOT umass DOT edu>  wrote:
>> On 8/24/2011 11:52 AM, Ronald of Steiermark wrote:
>>> On Wed, 24 Aug 2011 08:39 -0700, "Andrew DeFaria"<Andrew AT DeFaria DOT com>
>>> wrote:
>>> For instance, to test the cruel BAT files which we are going to deliver.
>> You can run .bat files from bash and other Cygwin shells.
> You can *run* them, but the effect is not always the same.
>
> For example, setting an environment variable within a batch file under
> CMD.EXE results in the environment variable being visible in the calling
> environment (similar to "sourcing" a file in bash), while calling the
> batch file from bash leaves the environment intact.
This behavior is well known. However why does it matter? Are you saying 
that you have to "source" a .bat file to set up the environment and then 
execute another .bat file that requires those environment settings??? 
I'm not saying this doesn't happen but it's not a very good practice.
> Also, some internal commands (for example COPY) are not present in bash,
> though this can be easily remedied using an alias or a shell function.
Why should this be an issue? I mean if you exec some .bat file and it 
calls "copy" does it not work?
> Other problems are related to the use of \ as a path separator. Imagine
> that some of your BATCH files generate environment variables containing
> a Windows path,
Again, why is this a problem? If your .bat file has "copy 
C:\Windows\some.dll C:\Temp" does it  not work? Or are you saying that 
you may need to do from bash:

$ some.bat <Windows path>

If this is there are a lot of solutions including cygpath, doubling 
backslashes, quoting file names or just using forward slashes (which 
Windows often works just fine with).
> and simply because bash command lines are interpreted differently than
> Windows CMD command line (for example, when it comes to quoting or
> parameter substitution).
We all know that bash interprets things the bash way. And  no doubt cmd 
interprets things it's way. I do not see cmd's interpretation as superior.
> The main problem, however, is: If you are going to deliver something,
> which is supposed to run under CMD.EXE,  most customers won't accept it
> until you really have tested it under CMD.EXE, and for good reason.
That's where:

$ cmd /c somescript.bat

comes in. That does run it under cmd.exe doesn't it? Why do you need 
anything more? Why do you need to enter multiple commands and have 
command history? Why not simply:

$ cmd /c testscript1.bat
<verify output>
$ # That worked!
$ cmd /c testscript2.bat
<verify output>
$ # That worked too...
$ # etc...
> In fact, even though I got running rxvt with cmd thanks to all the
> suggestions to my post, I will do some *final* tests  still in plain,
> native Windoze Command-Windows, just for the safe side.
>
> Using a bash shell as a "main work horse" is great, but when you have
> the pleasure to create and test batch files, you will sooner or later be
> happy to also have a CMD shell available...
Just re-write your .bat scripts in Perl! ;-)
>
>> In both cases you generally to present Windows paths, of course;
>> cygpath can help with that.
> I use cygpath in several of my scripts and it's extremely useful, but
> dealing with the various path representations in interactive work is,
> for me at least, an annoyance...
It's really  not that hard. Just s/\\/\/g! That often is enough. Or do a 
cygpath -w <posix path> or whatever.
-- 
Andrew DeFaria <http://defaria.com>
My wife keeps complaining I never listen to her ...or something like that.


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