Kurt Franke wrote:
Scott Wegner <swegner <at> hdfgroup.org> writes:
Greg Chicares wrote:
On 2008-03-25 13:30Z, Scott Wegner wrote:
I am trying to create a "wrapper" Cygwin bash script to add
functionality to an existing Windows batch script. In my Cygwin script,
I would like to call the batch file with something like:
...
cmd.exe /k batch-script.bat params
...
Calling the script in this fashion seems to generally work (in that the
script executes). However, I have trouble because the Cygwin path is
prepended to the Windows path in the batch script. As a result, trying
to use the Windows "find" use Cygwin's instead.
If you write
%SystemRoot%\system32\find
in the batch file, then you'll get the msw "find" whether or not
any Cygwin directory is on your path.
Hi Greg,
Thanks for the quick reply. This is a feasible solution. However, I'd
rather find a solution where the batch script can remain "unaware" of
its Cygwin context. Once I get things working, I plan on creating bash
script wrappers for many Windows batch scripts, so I'd like to make the
changes in the Cygwin environment, rather than editing each batch script
individually.
I'll keep looking at let you know if I find anything.
Scott
Hi Scott,
you may just remove all path components from PATH which are part of cygwin.
I use the following bash function to do those removing since long years ago:
rmpc()
{
local C=$2
local R=""
local OIFS="$IFS"
IFS="$IFS:"
set -- $1
IFS="$OIFS"
for i in "$@"
do
if [ "x$i" != "x$C" ]
then
if [ "x$R" != "x" ]
then
R="$R:$i"
else
R="$i"
fi
fi
done
echo $R
}
to work correctly make sure your wrapper script starts with bash in magic line -
#! /bin/bash
for example but not
#! /bin/sh
because when invoked as bourne shell necessary functionality may be missed
you may add this function directly after the magic line for invocation
then just before calling your dos batch scripts remove the unwanted
path components from PATH
you shouldn't do this earlier in your code because no cygwin applications
and scripts are found after this unless they are hashed by bash in a
pervious call
PATH=`rmpc $PATH /bin`
PATH=`rmpc $PATH /usr/bin`
you may remove any path component this way
PATH=`rmpc $PATH .` # remove .
PATH=`rmpc $PATH ""` # remove blank path components
caution: this mechanism remove all multiple occurences of a componente
from PATH
when returned from your dos batch script you are lacking the most cygwin
functionality.
to get it again you have to save the PATH previous to the changes:
SAVE_PATH=$PATH
and just restore it after the dos script returned:
PATH=$SAVE_PATH
Hi Kurt,
Thanks for the reply (as well as others who have contributed). This
looks like it will fit my needs perfectly. I'll give it a try and post
back if I have any more trouble.
Thanks!
Scott
regards
kf
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/