← Back to list

Why Linux Has So Many Directories (And Why Their Names Make No Sense)

The story behind /bin, /etc, /usr, /var, and the design philosophy of Unix

Manikanta majeti in FAUN.dev() 🐾 · 2026-06-06 02:08 · 31 claps · 5.2 min read
#linux #techanalogies #linux-tutorial #cloud-computing #devops
Open on Medium ↗
Wiki topics: PHI · Philosophy ☁️ · DevOps & Cloud 🔓 · Open Source 🎬 · Film & Television

Why Linux Has So Many Directories (And Why Their Names Make No Sense)

The story behind /bin, /etc, /usr, /var, and the design philosophy of Unix

When people first encounter Linux, they often see something like this:

/
├── bin
├── etc
├── home
├── usr
├── var

And the explanation usually goes like this:

  • /bin contains binaries
  • /etc contains configuration files
  • /home contains user files

Technically correct.

But it doesn’t answer a more interesting question:

Why does Linux have these directories in the first place?

Why not something simpler like:

/programs
/config
/users
/logs

And why do names like /etc or /usr even exist?

To understand that, it helps to step back for a moment.

Image generated from Canva

Image generated from Canva

What Do We Actually Use Computers For?

Most of what we do on a computer comes down to two simple things:

  • running programs
  • working with files

Programs perform computations. Files store information.

Photos, documents, logs, databases, code — they all eventually live as files somewhere on disk.

In fact, one of the core ideas behind Unix and Linux is this:

Linux treats almost everything as a file.

Because of this, the operating system needs a clear way to organize:

  • where programs live
  • where user files go
  • where system settings are stored
  • where temporary data should be placed

Linux solves this by organizing everything under a single starting point:

/

This is called the root directory.

Everything in the system lives somewhere beneath it.

To understand why the structure looks the way it does, it helps to think of Linux like something that grew over time.

Much like a house that evolves as a family grows.

Prefer visuals?

[embed]

The Very Beginning

Imagine a young couple moving into their first home.

Just two people. A small apartment.

Everything lives in the same space:

  • books
  • laptops
  • kitchen tools
  • documents
  • cables

There’s almost no structure yet.

Because there doesn’t need to be.

Early Unix systems were very similar.

They ran on machines with very limited memory, and disk drives could store only a few megabytes of data. The entire system had to fit within tight constraints.

As long as things stayed small, a simple layout worked.

But homes — and systems — rarely stay small forever.

The First Need: Everyday Tools

After a while, the family notices something.

There are certain tools they use every single day:

  • scissors
  • tape
  • screwdrivers
  • batteries

So they create a small drawer where these essentials always live.

Unix systems had the same need.

There were a handful of commands that were used constantly:

ls   → list files
cp   → copy files
mv   → move files
cat  → read files

These were placed in:

/bin

The name comes from binary executables.

/bin became the place for essential programs required to use the system — the things you reach for all the time.

Soon the System Faces a New Problem: Configuration

As more programs get added, another question appears:

Where should the system’s settings live?

Things like:

  • network configuration
  • user accounts
  • access rules
  • service settings

If every program stored its configuration randomly, the system would quickly become chaotic.

So everything was gathered into one place:

/etc

Originally, the name simply meant “et cetera” — a miscellaneous location.

But over time, it evolved into the central place for system configuration.

Files like:

/etc/hosts
/etc/passwd
/etc/ssh/sshd_config

define how the system behaves.

Everyone Needs Their Own Space

As the family grows, more people move in.

Now everyone needs their own place for:

  • personal files
  • projects
  • experiments
  • documents

You wouldn’t mix those with shared tools or system rules.

So each person gets their own room.

Linux does the same:

/home

Inside it, each user gets their own directory:

/home/alice
/home/bob

A place to work, experiment, and store personal files — without affecting the rest of the system.

When the House Starts Filling Up

Over time, the house accumulates more and more things.

Tools. Books. Equipment. Old gadgets.

Soon, the main living space feels crowded.

So the family starts using a garage or storage area for the bulk of their belongings.

Unix systems faced a similar challenge — but with an additional constraint.

Early machines had:

  • very limited memory
  • very small disks

Because of this, systems often used multiple physical disks.

One disk contained the minimal operating system — just enough to boot and recover the system.

Another disk was used to store the growing collection of programs and utilities.

That second disk was typically mounted at:

/usr

So /usr originally wasn’t just a directory.

It was often a completely separate storage area.

Over time, it became the place where most software lived:

/usr/bin
/usr/lib
/usr/share

This design solved an important problem:

The core system could remain small and stable, while software could continue to grow independently.

In a way, /usr was an early solution to scaling — separating the minimal operating system from the expanding ecosystem of programs.

Daily Life Leaves Records

Every household generates activity.

  • mail
  • receipts
  • logs of what happened
  • packages and deliveries

These things don’t stay static — they keep changing and growing.

Linux needed a place for this kind of data:

/var

The name comes from variable data.

Inside it, you’ll often find:

/var/log
/var/cache
/var/spool

These store things like logs, cached data, and background job information.

Unlike programs, this data is constantly changing.

Sometimes You Just Need a Scratch Space

Every home has a place where temporary things land.

A kitchen counter. A whiteboard. Sticky notes.

Things that are useful for a while but not meant to stay forever.

Linux has a directory for this:

/tmp

Programs use it for temporary files.

Many systems even clear it automatically after a reboot.

Why the Names Feel So Strange

Some of these names feel unusual today.

That’s because they were created in a time when:

  • storage was limited
  • typing effort mattered
  • simplicity was key

So short names were preferred:

DirectoryMeaning/binbinary programs/etc“et cetera”/usruser software area (historically)/varvariable data/tmptemporary files

They may look odd now, but they made perfect sense at the time.

The Hidden Design Principle

At this point, a pattern emerges.

Each directory exists to separate different types of data:

TypeDirectoryessential programs/binconfiguration/etcuser data/homesoftware/usrchanging data/vartemporary data/tmp

This separation makes systems easier to:

  • manage
  • scale
  • maintain

A Small Historical Twist

Modern Linux systems are slowly changing this layout.

Originally, directories like /bin and /usr/bin were separate because they often lived on different disks.

But today, most systems use a single large disk.

Because of this, many distributions have adopted something called the “usr merge.”

In this approach:

/bin  → /usr/bin
/lib  → /usr/lib
/sbin → /usr/sbin

These directories still exist, but they often point to the same location behind the scenes.

It simplifies the system while keeping compatibility with decades of existing software.

And There Are Many More

If you explore further, you’ll find additional directories like:

  • /dev — representing hardware devices
  • /lib — shared libraries used by programs
  • /boot — files needed to start the system
  • /proc — system and process information
  • /opt — optional third-party software

Each has its own purpose.

But the core structure we’ve explored tells the main story.

Image generated using Canva

Image generated using Canva

The Big Picture

At first glance, the Linux filesystem can feel confusing.

Why so many directories? Why such strange names?

But when you see it as something that evolved over decades, it starts to make sense.

It’s like a house that slowly adapts as a family grows:

Linux DirectoryThink of it like/the house itself/binthe everyday tool drawer/etcthe household rulebook/homepersonal rooms/usrthe garage or storage area/varthe record-keeping cabinet/tmpthe temporary workspace

What began as a tiny system grew into a well-organized structure — shaped by real constraints, real needs, and years of evolution.

And the filesystem still carries that story today.


메타데이터
post_id
720d8141e7af
slug
why-linux-has-so-many-directories-and-why-their-names-make-no-sense-720d8141e7af
url
https://medium.com/@techcircumference/why-linux-has-so-many-directories-and-why-their-names-make-no-sense-720d8141e7af
canonical_url
https://medium.com/@techcircumference/why-linux-has-so-many-directories-and-why-their-names-make-no-sense-720d8141e7af
author_url
https://medium.com/@techcircumference
status
ok
fetched_at
2026-08-24 20:59:49