Bash Directories – Difference Between / and // in macOS

bashmacos

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?

Best 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.

Related Question