Wednesday, 8 August 2018

macos - Difference between / and // directories in bash OSX


I was working in the bash terminal on my system (OSX 10.8.3 / bash version 3.2.48(1)-release (x86_64-apple-darwin12)) and I accidentally typed "cd //" instead of "cd /" to get back to the root directory.


Strange thing was that it took me to "//" which when I listed looked exactly like "/".


So my questions are: Is there any semantic difference betweens these two paths?
What if anything is the purpose of these two paths? and/or is it a bug?



Answer



In Unix and derivatives, multiple slashes following each other carry the same meaning as one slash. OS X is certified Unix, and thus follows that specification.


From the Single Unix Specification about the path name:



[A path] has an optional beginning slash, followed by zero or more filenames separated by slashes. A pathname may optionally contain one or more trailing slashes. Multiple successive slashes are considered to be the same as one slash.



The only special case is a path beginning with //. Its interpretation is up to the implementation (see Pathname Resolution in the SUS):



A pathname that begins with two successive slashes may be interpreted in an implementation-defined manner, although more than two leading slashes shall be treated as a single slash.



No comments:

Post a Comment

Where does Skype save my contact's avatars in Linux?

I'm using Skype on Linux. Where can I find images cached by skype of my contact's avatars? Answer I wanted to get those Skype avat...