system mkdir

noboy nobody at nowhere.com
Thu Mar 18 07:12:25 PDT 2010


There was a soft link /bin/sh -> dash
I have change this to bash, and now all went fine.

Thank you

Steven Schveighoffer Wrote:

> On Thu, 18 Mar 2010 09:28:06 -0400, noboy <nobody at nowhere.com> wrote:
> 
> > I was little bit surprise because
> > mkdir -p dmd-2/usr/{bin,lib,src/phobos2,share/man
> > do the right thing.
> 
> When you do that, you are using your shell.  The shell actually does the  
> argument expansion, not mkdir.  So the question to answer is, does system  
> use the shell or just call mkdir directly.  According to my man page,  
> using system("cmd") is equivalent to doing /bin/sh -c cmd.  On my system  
> doing this:
> 
> /bin/sh -c 'mkdir -p /testdir/{a,b,c}'
> 
> results in the desired behavior.  The single quotes force the shell I'm  
> currently running *not* to expand the arguments, but pass them directly to  
> /bin/sh as one string.  I would expect that system would execute the same  
> command.
> 
> I would guess on my system that your code would work properly, but I'm not  
> sure.  What you need to find out is what /bin/sh actually is on your  
> system.  Maybe it is a shell that does not understand how to expand the  
> {a,b,c} term.  IIRC, /bin/sh usually is a link to bash, but I think on  
> some systems, bash behaves differently if it's called via /bin/sh.
> 
> > But if i make
> > mkdir -p "dmd-2/usr/{bin,lib,src/phobos2,share/man"
> > it's wrong.
> >
> > So i have think the system command wrap quotes about the command.
> 
> I don't think this is what's happening.
> 
> -Steve



More information about the Digitalmars-d-learn mailing list