This is the mail archive of the
cygwin@cygwin.com
mailing list for the Cygwin project.
Re: Multiple backslashes
- From: Dmitry Bely <dbely at mail dot ru>
- To: Randall R Schulz <rrschulz at cris dot com>
- Cc: cygwin at cygwin dot com
- Date: 10 Feb 2002 20:49:35 +0300
- Subject: Re: Multiple backslashes
- References: <5.1.0.14.2.20020210090253.00aa0608@pop3.cris.com>
Randall R Schulz <rrschulz@cris.com> writes:
> Apart from the fact that this question involves Windows native path
> name syntax (which, by the way, works equally well with forward
> slashes), this is not Cygwin-specific.
>
>
> There are two levels or rounds of interpretation of your command
> string. The first is applied by the shell that interpets the command
> you mentioned.
No.
C:\Work>cmd /c "ls c:\"
[...]
works, while
C:\Work>bash -c "ls c:\\"
does not. Why?
> Then the bash invoked by that command interprets the
> argument to the "-c" option. Each of these rounds of interpretation
> replaces "\\" with "\".
The problem is that the first shell (cmd.exe) does not replace "\\" with
"\"! And I have found it in the case where bash is the only shell (see below).
OK, another strange behaviour:
C:\Work>bash -c "c:/cygwin/bin/ls.exe"
[...]
works.
C:\Work>bash -c "c:\cygwin\bin\ls.exe"
bash: c:cygwinbinls.exe: command not found
as expected.
C:\Work>bash -c "c:\\cygwin\\bin\\ls.exe"
bash: c:\cygwin\bin\ls.exe: command not found
why???
C:\Work>bash -c "c:\\\\cygwin\\\\bin\\\\ls.exe"
bash: c:\\cygwin\\bin\\ls.exe: command not found
expected by me, but not by you :-)
bash does something that is beyond my comprehension...
> If you use "hard" quotes (apostrophes) then you'll only need two backslashes.
>
> If you use forward slashes (and CMD.exe is not going to be involved),
> then you'll only need quoting to handle spaces and shell globbing
> metacharacters (i.e., '*', '?' or '[') and syntactically significant
> characters (e.g., '(' or ';').
A cannot always use forward slashes. I am trying to make XEmacs/Win32 work
with bash shell. It constructs a command like
bash -c "<command line with back slashes>"
which bash does not like. Obviously, I cannot simply replace all
backslashes with forward ones, because XEmacs also escapes some
metacharacters ...
Hope to hear from you soon,
Dmitry
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/