delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
DomainKey-Signature: | a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:date:from:to:subject:message-id:references | |
:mime-version:content-type:in-reply-to; q=dns; s=default; b=gc0l | |
qu/RIImTJeXLqiIay527XtgSM8Wz/ssNBwEWIY7GfLTTElVEQqhOLlaY208j+YHt | |
/16eFPZei0UCakV9NFyT/8E+L8p++iDDN7vFP9iSWkpePiOoTBqTQcODNuWYPdJ5 | |
xV7o2Nejl3mlGZ3i9x6GgvQ73cBxXvt/2Ebf3OQ= | |
DKIM-Signature: | v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:date:from:to:subject:message-id:references | |
:mime-version:content-type:in-reply-to; s=default; bh=EfGdN7DLeF | |
l9DnKbqUT5YgUHOwU=; b=cakPoWP2/nVx/SzQya0eoGGeNi3NDhVLVsmIIxF1Qy | |
7bA5u6kg0g4wB+t5OB51zrEAHwBBwCRknCpnjHIJ5XQjD9SQy4lrCVhN4rmfqrmy | |
Wem9x+fQw7NFtvp5zOn+xaVv8Db6RdhozRIsBCGQPknctPIh23KL2gi4H+8Q4v7o | |
Y= | |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Id: | <cygwin.cygwin.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 |
Authentication-Results: | sourceware.org; auth=none |
X-Virus-Found: | No |
X-Spam-SWARE-Status: | No, score=-2.8 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 |
X-HELO: | mail.spocom.com |
Date: | Mon, 8 Sep 2014 20:02:38 -0700 |
From: | Gary Johnson <garyjohn AT spocom DOT com> |
To: | cygwin AT cygwin DOT com |
Subject: | Re: latest cygwin: 'run' problem |
Message-ID: | <20140909030238.GD4187@phoenix> |
Mail-Followup-To: | cygwin AT cygwin DOT com |
References: | <54060378 DOT 2070108 AT gmail DOT com> <5406680D DOT 4030105 AT verizon DOT net> <540761FA DOT 1040902 AT verizon DOT net> <87ppfcqyc7 DOT fsf AT Rainer DOT invalid> <540A600A DOT 6090201 AT verizon DOT net> <540A6817 DOT 9080207 AT verizon DOT net> <20140906201229 DOT GA9220 AT phoenix> <20140908174606 DOT GA4187 AT phoenix> <1448944831 DOT 20140909024857 AT yandex DOT ru> <20140909011413 DOT GC4187 AT phoenix> |
MIME-Version: | 1.0 |
In-Reply-To: | <20140909011413.GC4187@phoenix> |
User-Agent: | Mutt/1.5.20 (2009-06-14) |
X-IsSubscribed: | yes |
On 2014-09-08, Gary Johnson wrote: > On 2014-09-09, Andrey Repin wrote: > > Greetings, Gary Johnson! > > > > > I wrote a batch file and a shell script to implement a Run Bash Here > > > feature from the Windows file manager "Send to" context menu, much > > > like chere but without having to mess with the registry. The > > > hardest part was getting the quoting in the run command line right > > > so that both cmd and bash were happy. The files are included > > > in-line below. > > > > That's overengineered. > > Perhaps. I know very little about Windows cmd shell programming, so > I tried to pass the file name to bash early in the process and > perform any logic there. > > > > ------------------------ run_bash_here.bat ------------------------- > > > -------------------------------------------------------------------- > > > > Replace it all with this "bash-here.cmd" placed in /bin : > > > > @START "" /D "%~1" "%~dp0\mintty.exe" > > > > > ------------------------- run_bash_here.sh ------------------------- > > > -------------------------------------------------------------------- > > > > This all is just not needed. > > Just create a shortcut in "Sent to" to your bash-here.cmd - job done, reap the > > rewards. > > Thanks very much for the example. It took me a while to figure out > what that does. I copied that line to bash-here.cmd and created a > shortcut to it from my SendTo directory. It almost works, but there > are a few things my version does that yours does not. > > First, yours works only if you execute it while the target directory > is selected in its parent directory. Mine also works to run mintty > in the current directory if you execute it while a file in that > directory is selected. > > Second, my version runs a login shell which sets up the environment > correctly, e.g., puts /usr/local/bin:/usr/bin: at the head of PATH. > Just telling mintty to run a login shell isn't sufficient, however, > because that also sets the current directory to your home directory, > so you then need to cd to the target directory with the target path > translated to Unix form. > > Those issues may be easy to fix, but as I said, I don't know my way > around cmd very well. > > It might actually be better if the script always started bash in the > parent directory of the selected file. That would be more > consistent and could be simpler to implement. I'll try to find an > explanation of cmd parameter expansion and see what I can figure > out. After much fiddling (programming by successive approximation), I came up with this: @START "" "C:\cygwin\bin\mintty.exe" /bin/bash --login -c "cd $(cygpath -u $0); exec bash -i" "%~p1\" Using an explicit path to mintty lets me put the script itself someplace other than /bin. Because %~p1 ends with a backslash, I had to add another backslash before the closing quote to prevent the quote from being included in the path. (See http://ss64.com/nt/syntax-args.html and http://ss64.com/nt/syntax-esc.html#escape.) I haven't tried it yet with a path that includes a space. Tomorrow. Regards, Gary -- 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
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |