In a Google+ post by Rob Pike,
A lesson in shortcuts,
is given this explanation :
Long ago, as the design of the Unix file system was being worked out, the entries
.. appeared, to make navigation easier. I'm not sure but I believe
.. went in during the Version 2 rewrite, when the file system became hierarchical (it had a very different structure early on). When one typed
ls, however, these files appeared, so either Ken or Dennis added a simple test to the program. It was in assembler then, but the code in question was equivalent to something like this:
if (name == '.') continue;
This statement was a little shorter than what it should have been, which is
if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;
but hey, it was easy.
Two things resulted.
First, a bad precedent was set. A lot of other lazy programmers
introduced bugs by making the same simplification. Actual files
beginning with periods are often skipped when they should be counted.
Second, and much worse, the idea of a "hidden" or "dot" file was
created. As a consequence, more lazy programmers started dropping
files into everyone's home directory. I don't have all that much stuff
installed on the machine I'm using to type this, but my home directory
has about a hundred dot files and I don't even know what most of them
are or whether they're still needed. Every file name evaluation that
goes through my home directory is slowed down by this accumulated
I'm pretty sure the concept of a hidden file was an unintended
consequence. It was certainly a mistake.
(For those who object that dot files serve a purpose, I don't dispute that but counter that it's the files that serve the purpose, not the convention for their names. They could just as easily be in $HOME/cfg or $HOME/lib, which is what we did in Plan 9, which had no dot files. Lessons can be learned.)
So what I understand is that :
As these "dot files" became invisible, other programmers jumped in
and decided that the place to store their precious configuration data
was in dot files right along with the
As in the beginning file hierarchy was not very evolved,
they all ended up in the $HOME directory, and pretty quick this became
an unwritten convention to which everybody conformed,
following in the steps of the founding fathers.
This gave rise to such monstrosities as :
Linux History: How Dot Files Became Hidden Files