13

What is it? ...

5 Answers 5

13

Wikipedia has a decent explanation. From that article:

  • /bin: "Essential command binaries that need to be available in single user mode; for all users, e.g., cat, ls, cp."
  • /usr/bin: "Non-essential command binaries (not needed in single user mode); for all users."
3
  • For more info take a look into pathname.com/fhs/pub/fhs-2.3.html
    – Marcin Gil
    Nov 30, 2009 at 7:26
  • 5
    In addition to their essential status, /bin should be statically linked (not try to dynamically load dependencies) which means they may be much larger files. However, they will still work even if necessary system libraries are mucked up. /usr/bin has no such recommendation.
    – Broam
    Nov 30, 2009 at 14:35
  • Most of the time, the stuff in /bin is not statically linked these days. You use busybox if you need a statically liked environment.
    – Ken Bloom
    Dec 2, 2009 at 20:59
9
$ man hier

contains a good description of the file system hierarchy

8

In the old days of small disks, it was common to have /bin on the boot disk, and /usr/bin on a separate disk (sometimes even a shared network drive). /bin would contain anything needed to either boot the system, or fix it if /usr/bin couldn't be mounted for some reason. Its another one of those historical accidents that doesn't make as much sense today.

3

The distinction is simple:

/bin is where system binaries are stored (mostly these binaries are owned by root) whereas /usr/bin is the usual spot for binaries that are used by ordinary non-root users. It is also a common place to deposit binary programs that were built by the compiler to be used by other users.

1

A lot of times (even today, for various reasons), people create /usr as a separate filesystem. In these circumstances, / is mounted first, then programs on / are used to mount /bin. So there's a requirement that anything needed to get to the point of mounting /usr needs to live in /bin or /sbin. Additionally, anything useful in troubleshooting problems (if you can't mount /usr) is also best stored in /bin or /sbin.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .