delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
X-SWARE-Spam-Status: | No, hits=0.0 required=5.0 tests=AWL,BAYES_50,DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED,RP_MATCHES_RCVD,SARE_SUB_ENC_UTF8,SPF_HELO_PASS,TW_HR |
X-Spam-Check-By: | sourceware.org |
To: | cygwin AT cygwin DOT com |
From: | Andy <AndyMHancock AT gmail DOT com> |
Subject: | Re: Shelling out to cygwin bash from Windows vim Options =?utf-8?b?CQ==?= |
Date: | Sun, 2 Sep 2012 00:03:58 +0000 (UTC) |
Lines: | 45 |
Message-ID: | <loom.20120902T020311-244@post.gmane.org> |
Mime-Version: | 1.0 |
User-Agent: | Loom/3.14 (http://gmane.org/) |
X-IsSubscribed: | yes |
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 |
Sorry, what I posted was completely lacking in context. The shell option has to be set in such a way that bash sources .bashrc and picks up the aliases, function definitions, and most importantly, the PATH. To maintain common vimrc files for Windows & Cygwin installs of vim across multiple computers, I stick a pair conditional if tests around the code that sets the shell option only if the executing vim is a Windows install on an computer that is known to have cygwin. if ( \ hostname()=="host1withCygwin" || \ hostname()=="host2withCygwin" || \ hostname()=="host3withCygwin" \ ) if has("win32") || has("win64") "set shell=c:\cygwin\bin\bash.exe\ -i "Won't always find ~/.bashrc cuz depending on how vim is "launched, ~ doesn't always resolve to "c:/cygwin/home/$USERNAME "let &shell='c:\cygwin\bin\bash.exe ' . " \ '--rcfile c:\cygwin\home\' . $USERNAME . '\.bashrc' "Backslashes are hated by bash. Also needs -i to "ensure bash is interactive so that .bashrc is "sourced let &shell='c:\cygwin\bin\bash.exe ' . \ --rcfile c:/cygwin/home/' . $USERNAME . '/.bashrc -i' " Depending on how vim is launched, " c:/cygwin/home/$USERNAME will sometimes be equivalent to " ~. If so, then it will be replaced by ~ in &shell. endif endif Though the above works fine for me, I'm sure both if for checking the host can be eliminated by simply checking for the existence of c:/ cygwin/$USERNAME/.bashrc. Unless some machines with cygwin use a different path or drive for user home directories. Or unless there are specific machines on which the user does not want to be able to shell out in the above manner. For example, I haven't tested what happens if the user relies on a system wide bashrc, and hence doesn't have a bashrc in his/her home directory. -- 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 |