From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23059 invoked by alias); 1 Aug 2011 07:28:41 -0000 Received: (qmail 23043 invoked by uid 22791); 1 Aug 2011 07:28:40 -0000 X-SWARE-Spam-Status: No, hits=-0.7 required=5.0 tests=AWL,BAYES_50,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from mail-iy0-f171.google.com (HELO mail-iy0-f171.google.com) (209.85.210.171) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 01 Aug 2011 07:28:21 +0000 Received: by iyi12 with SMTP id 12so8523332iyi.2 for ; Mon, 01 Aug 2011 00:28:21 -0700 (PDT) MIME-Version: 1.0 Received: by 10.231.152.1 with SMTP id e1mr2786205ibw.53.1312183701240; Mon, 01 Aug 2011 00:28:21 -0700 (PDT) Received: by 10.231.191.3 with HTTP; Mon, 1 Aug 2011 00:28:20 -0700 (PDT) In-Reply-To: <80ei15lj87.fsf@somewhere.org> References: <80hb65b3ue.fsf@somewhere.org> <20110729201651.GB13084@calimero.vinschen.de> <1686210011.20110730161401@mtu-net.ru> <80ei15lj87.fsf@somewhere.org> Date: Mon, 01 Aug 2011 07:28:00 -0000 Message-ID: Subject: Re: Portable shell code between Cygwin and Linux From: Csaba Raduly To: cygwin@cygwin.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com X-SW-Source: 2011-08/txt/msg00006.txt.bz2 On Mon, Aug 1, 2011 at 8:49 AM, Sebastien Vauban=A0 wrote: > > Hi Andrey, > > Andrey Repin wrote: > >>> For every shell code that I write, I'd like it to be portable both to > >>> Cygwin on Windows, and to Ubuntu Linux for example. > >>> > >>> It's kinda possible, but am blocked with such a use case: > >>> > >>> alias vpnup=3D'exec sudo openvpn --config ~/config/client.vpn --write= pid /tmp/openvpn.pid &' > >>> > >>> While this worked perfectly under Ubuntu, I've had to make up a custo= mized > >>> version for Windows: > >>> > >>> alias vpnupwin=3D'cd c:/home/sva/config; openvpn --config client.vpn = --writepid c:/cygwin/tmp/openvpn.pid &' > > > >> Don't use Win32 paths. =A0Use POSIX paths: > > > >> =A0 alias vpnupwin=3D'cd /cygdrive/c/home/sva/config; openvpn --config= client.vpn --writepid /cygdrive/c/cygwin/tmp/openvpn.pid &' > > > > Moreover, the very first line is wrong. > > > > Must be > > > > alias vpnup=3D'exec sudo openvpn --config $HOME/config/client.vpn --wri= tepid /tmp/openvpn.pid &' > > > > that's where his problem began, IMO. > > That's interesting. I thought this was completely equivalent (~ or $HOME)= , and > preferred the shorter version. > > But you say it's not. Can you comment on this? =A0Thanks in advance... > bash.info=A0=A0 Tilde expansion: "If a word begins with an unquoted tilde character (`~'), all of the characters up to the first unquoted slash (or all characters, if there is no unquoted slash) are considered a TILDE-PREFIX." Note "word begins". I've been bitten by this in a makefile: OPENSSL_DIR :=3D ~/lib/openssl CPPFLAGS :=3D -I$(OPENSSL_DIR) The gcc command line then contained -I~/lib/openssl, and the ~ was not expanded by the shell. ${HOME}/lib/openssl would have worked. If you want the same alias to work on Cygwin and Linux, you should set up your $HOME on Cygwin to contain config/client.vpn You can set your home in /etc/passwd and point it to /cygdrive/c/home (this may have been mentioned already). The idea is to always refer to the VPN config as ${HOME}/config/client.vpn and ensure that Cygwin can access it that way. Hope this helps, Csaba -- GCS a+ e++ d- C++ ULS$ L+$ !E- W++ P+++$ w++$ tv+ b++ DI D++ 5++ The Tao of math: The numbers you can count are not the real numbers. Life is complex, with real and imaginary parts. "Ok, it boots. Which means it must be bug-free and perfect. " -- Linus Torv= alds "People disagree with me. I just ignore them." -- Linus Torvalds -- 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