• FQQD@lemmy.ohaa.xyz
    link
    fedilink
    English
    arrow-up
    233
    ·
    2 months ago

    i always thought /usr stood for “user”. Please tell me I’m not the only one

    • Kuunha@lemmy.eco.br
      link
      fedilink
      arrow-up
      79
      ·
      2 months ago

      Ken Thompson and Dennis Ritchie created Unix on a PDP-7 in 1969. Well around 1971 they upgraded to a PDP-11 with a pair of RK05 disk packs (1.5 megabytes each) for storage.

      When the operating system grew too big to fit on the first RK05 disk pack (their root filesystem) they let it leak into the second one, which is where all the user home directories lived (which is why the mount was called /usr). They replicated all the OS directories under there (/bin, /sbin, /lib, /tmp…) and wrote files to those new directories because their original disk was out of space. When they got a third disk, they mounted it on /home and relocated all the user directories to there so the OS could consume all the space on both disks and grow to THREE WHOLE MEGABYTES. And thereafter /usr is used to store user programs while /home is used to store user data.

      source: http://lists.busybox.net/pipermail/busybox/2010-December/074114.html

      • bubstance@lemmy.sdf.org
        link
        fedilink
        English
        arrow-up
        3
        ·
        edit-2
        2 months ago

        You are correct and this can be seen in some of the old AT&T demos from the '80s floating around on YouTube. There is even a chart that specifically labels a directory like /usr/bwk as the user’s home.

        Plan 9 also uses this old convention; users live under /usr and there is no /home.

    • AnUnusualRelic@lemmy.world
      link
      fedilink
      English
      arrow-up
      15
      ·
      2 months ago

      It’s always been for USeR binaries. It’s the first time I’ve seen this bizarre backronym (40 years of Unix here).

    • gerryflap@feddit.nl
      link
      fedilink
      arrow-up
      5
      ·
      2 months ago

      I was just about to post the same thing. I’ve been using Linux for almost 10 years. I never really understood the folder layout anyway into this detail. My reasoning always was that /lib was more system-wide and /usr/lib was for stuff installed for me only. That never made sense though, since there is only one /usr and not one for every user. But I never really thought further, I just let it be.

    • TrickDacy@lemmy.world
      link
      fedilink
      arrow-up
      4
      ·
      2 months ago

      Same. I actually feel like I remember the professor of my only unix class saying that. Hoping I’m wrong.

    • Baku@aussie.zone
      link
      fedilink
      English
      arrow-up
      3
      ·
      2 months ago

      Likewise.

      It’s also only just now dawning on me /bin is short for /binaries. I always thought it was like… A bin. like a junk drawer hidden in a cupboard

    • superkret@feddit.org
      link
      fedilink
      arrow-up
      0
      ·
      2 months ago

      I thought it was United System Resources.
      And I still don’t know what’s the point in separating /bin, /sbin, /usr/bin and /usr/sbin.
      Also /mnt and /media
      Or why it’s /root and not /home/root

      • 4am@lemm.ee
        link
        fedilink
        arrow-up
        1
        ·
        2 months ago

        I think /mnt is where you manually mount a hard drive or other device if you’re just doing it temporarily, and /media has sub folders for stuff like cdrom drives or thumb drives?

        • superkret@feddit.org
          link
          fedilink
          arrow-up
          0
          ·
          2 months ago

          Yeah, but why?
          You can mount a hard drive anywhere, and why not put all the cdrom and thumbdrive folders in /mnt, too?

          • Dalaryous@lemmy.ml
            link
            fedilink
            English
            arrow-up
            1
            ·
            2 months ago

            /media is for removable drives. If you mount something there, file managers like Gnome will show you the “eject” or “disconnect” button.

            /mnt drives show up as regular network drives without that “eject” functionality.

          • umbraroze@lemmy.world
            link
            fedilink
            arrow-up
            1
            ·
            2 months ago

            /mnt is meant for volumes that you manually mount temporarily. This used to be basically the only way to use removable media back in the day.

            /media came to be when the automatic mounting of removable media became a fashionable thing.

            And it’s kind of the same to this day. /media is understood to be managed by automounters and /mnt is what you’re supposed to mess with as a user.

  • Todd Bonzalez@lemm.ee
    link
    fedilink
    arrow-up
    114
    arrow-down
    1
    ·
    2 months ago

    “Linux File Systems”

    *List of root directories*

    Uh, where are the file systems? EXT4… BTRFS… FAT32…

    • cm0002@lemmy.world
      link
      fedilink
      arrow-up
      9
      ·
      edit-2
      2 months ago

      Thanks! I’ll save this, tell myself I’m going to strictly follow it this time and forget about it (again) lol

    • N0x0n@lemmy.ml
      link
      fedilink
      arrow-up
      3
      ·
      edit-2
      2 months ago

      Edit: Thank you, found it on your shared link ! 😄

      Oh wow thank you ! Would it be to much to ask for a dark mode version? If there’s a one hit button to change into a more eye friendly color mode :)

      Either way, thank your for sharing your work :))

    • Peffse@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      2 months ago

      I still have no clue where permanently attached USB SSDs are supposed to be mounted. I just shove them into LVM2 and put the mapper under /mnt since putting them under /home wouldn’t let other users access them.

      • JATth@lemmy.world
        link
        fedilink
        arrow-up
        6
        ·
        2 months ago

        permanently attached USB SSDs are supposed to be mounted

        Just mount them somewhere under / device, so if a disk/mount fails the mounts depended on the path can´t also fail.

        I keep my permanent mounts at /media/ and I have a udev rule, that all auto mounted media goes there, so /mnt stays empty. A funny case is that my projects BTRFS sub-volume also is mounted this way, although it is technically on the same device.

  • Leaflet@lemmy.world
    link
    fedilink
    English
    arrow-up
    83
    arrow-down
    3
    ·
    2 months ago

    I don’t get why this sort of picture always gets posted and upvoted when it’s wrong for most distros nowadays.

    • TrickDacy@lemmy.world
      link
      fedilink
      arrow-up
      12
      ·
      2 months ago

      Can you recommend one that is correct? I use pop_os (Ubuntu) and Arch. Kinda curious about either one

      • Leaflet@lemmy.world
        link
        fedilink
        English
        arrow-up
        35
        arrow-down
        1
        ·
        edit-2
        2 months ago

        Not aware of any correct pictures, but I can tell you what’s wrong with this one

        • /usr: explaining it as “Unix System Resources” is a bit vague
        • /bin: /bin is usually a symlink to /usr/bin
        • /sbin: /sbin is usually a symlink to /usr/sbin, distros like Fedora are also looking into merging sbin into bin
        • /opt: many, I’d say most, “add-on applications” put themselves in bin
        • /media: /media is usually a symlink to /run/media, also weird to mention CD-ROMs when flash drives and other forms of storage get mounted here by default
        • /mnt: i would disagree about the temporary part, as I mentioned before, stuff like flash drives are usually mounted in /run/media by default
        • /root: the root user is usually not enabled on home systems
        • /lib: /lib is usually a symlink to /usr/lib

        I would also like the mention that the FHS standard wasn’t designed to be elegant, well thought out system. It mainly documents how the filesystem has been traditionally laid out. I forget which folder(s), but once a new folder has been made just because the main hard drive in a developer’s system filled up so they created a new folder named something different on a secondary hard drive.

        • TrickDacy@lemmy.world
          link
          fedilink
          arrow-up
          5
          ·
          2 months ago

          Thanks for this. I’m always confused by the layout and this tend to stick to putting things in the same places, even if they’re wrong :)

        • Sunny' 🌻@slrpnk.net
          link
          fedilink
          arrow-up
          3
          ·
          2 months ago

          On my distro(Bazzite), /mnt is only a symlink to /var/mnt. Not sure why, but only found out the other day.

          • Leaflet@lemmy.world
            link
            fedilink
            English
            arrow-up
            1
            ·
            2 months ago

            I’m using Silverblue and it also symlinks to /var/mnt. I don’t think it does that on traditional distros, like Fedora 40 Workstation.

            • LeFantome@programming.dev
              link
              fedilink
              arrow-up
              1
              ·
              2 months ago

              I assume it is because /var can be written to while the rest of the filesystem ( outside /home ) is expected to be read-only.

    • Kusimulkku@lemm.ee
      link
      fedilink
      arrow-up
      8
      arrow-down
      1
      ·
      2 months ago

      It seems handy when you’re learning about stuff but only when you haven’t learned enough to realize it’s not correct.

    • cogman@lemmy.world
      link
      fedilink
      arrow-up
      34
      arrow-down
      1
      ·
      2 months ago

      usr does mean user. It was the place for user managed stuff originally. The home directory used to be a sub directory of the usr directory.

      The meaning and purpose of unix directories has very organically evolved. Heck, it’s still evolving. For example, the new .config directory in the home directory.

      • JATth@lemmy.world
        link
        fedilink
        arrow-up
        16
        ·
        edit-2
        2 months ago

        For example, the new .config directory in the home directory.

        I hope slowly but surely no program will ever dump its config(s) as ~/.xyz.conf (or even worse in a program specific ~/.thisapp/; The ~/.config/ scheme works as long as the programs don’t repeat the bad way of dumping files as ~/.config/thisconfig.txt. (I’m looking at you kde folks…) A unique dir in .config directory should be mandatory.

        If I ever need to shed some cruft accumulated over the years in ~/.config/ this would make it a lot easier.

        • dafo@lemmy.world
          link
          fedilink
          arrow-up
          13
          arrow-down
          1
          ·
          edit-2
          2 months ago

          I don’t trust a graphic which explains /boot as “system boot loader files”…

            • dafo@lemmy.world
              link
              fedilink
              arrow-up
              11
              arrow-down
              1
              ·
              edit-2
              2 months ago

              It’s not wrong, but it feels a bit like some tech articles you’ll see which are obviously just created to fluff up a CV. I wouldn’t say avyttring here is flat out wrong, just kinda… lacking.

              But yeah, /boot holds “system boot loader files”, sure, but that’s a bit vague. It should contain your kernel and initramcpio and IIRC Grub also had its config here. That’s pretty much it. I would’ve rather said /boot contains the kernel.

              “device files” it’s so vague that it’s almost wrong IMO. At first glaze I would’ve thought that it means drivers rather than, say, “interfaces to devices”

          • Peter1986C@lemmings.world
            link
            fedilink
            arrow-up
            4
            ·
            2 months ago

            It kind of makes sense on many BIOS/UEFI-less systems where e.g. Uboot is used. And it does contain things like kernel images, sometimes initRD files etc. (which may not be bootloader files but are still system boot files).

      • Random Dent@lemmy.ml
        link
        fedilink
        English
        arrow-up
        20
        ·
        2 months ago

        According to this, it’s been around since the 70’s and was originally just a catch-all for files that didn’t fit in the other default directories, but over time has come to be mostly used for config files. I assume it would cause utter mayhem to try and change the name now so I guess it just sticks. Someone suggested “Edit To Configure” as a backronym to try and make it make more sense if that helps anyone lol.

      • cm0002@lemmy.world
        link
        fedilink
        arrow-up
        10
        arrow-down
        1
        ·
        2 months ago

        Is there a historical reason?

        If you’re asking that in anything Linux related, it’s probably a Yes 99% of the time LMAO

      • Revan343@lemmy.ca
        link
        fedilink
        arrow-up
        1
        ·
        2 months ago

        It’s probably the standard in both POSIX and the Single UNIX Specification, so I guess ask Ken Thompson?

    • InverseParallax@lemmy.world
      link
      fedilink
      English
      arrow-up
      2
      ·
      2 months ago

      It meant user, as in user-installed programs and libraries for this system over the core system programs and libraries of the operating system in /bin and /lib.

      Someone learned it wrong, but otherwise I think the image is right.

  • Hyacin (He/Him)@lemmy.ml
    link
    fedilink
    English
    arrow-up
    51
    arrow-down
    2
    ·
    2 months ago

    I learned about 16 years ago on a Solaris course that /usr wasn’t “user”, I still say “user”, but I’m happy to see the information spreading that that isn’t what it actually is.

    • nadir@lemmy.world
      link
      fedilink
      arrow-up
      12
      ·
      2 months ago

      usr did originally mean user and held user data.

      Pretty sure this is a bacronym

    • ulterno@lemmy.kde.social
      link
      fedilink
      English
      arrow-up
      9
      ·
      2 months ago

      I used to pronounce it like yuzr, knowing that it wasn’t user, but not knowing what it was.
      Now I have better context. Maybe I’ll go with U.S.R.

      • Malfeasant@lemm.ee
        link
        fedilink
        arrow-up
        1
        ·
        2 months ago

        If you want to confuse people… I pronounce /etc as “ets”, but one of my coworkers recently called it “slash e t c” and I had to ask him to repeat it a couple times before I figured out what he meant…

        • ulterno@lemmy.kde.social
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 months ago

          Well, considering that I am with coworkers who don’t remember when to and not to put the ‘/’ at the start of the file path (despite me explaining it to them multiple times), “slash e t c” is probably the better way.

  • wvstolzing@lemmy.ml
    link
    fedilink
    arrow-up
    37
    ·
    2 months ago

    A pedantic thing to say, surely, but the title really should’ve been: “Linux Directory Structure” – ‘Linux filesystems’ (the title in the graphic) refers to a different topic entirely; the title of this post mitigates the confusion a bit, though still, ‘directory structure’ is the better term.

  • linearchaos@lemmy.world
    link
    fedilink
    English
    arrow-up
    35
    ·
    2 months ago

    /opt/(app)/bin /usr/lib/(app)/bin /usr/lib64/app/bin /usr/local/(s)bin

    I know there is logic and mapping of where everything’s supposed to be in theory but in practice s***'s kind of all over the place.

    • kalleboo@lemmy.world
      link
      fedilink
      arrow-up
      20
      ·
      2 months ago

      The logic was just that when UNIX was originally evolving, they ran out of disk space on their PDP-11 and had to start moving less-essential binaries to a different disk. That’s why it’s “/usr/” which was originally for user data but that disk happened to have free space.

      Any other explanation is just retcon. Some distros try to simplify things.

    • jalkasieni@sopuli.xyz
      link
      fedilink
      arrow-up
      22
      ·
      2 months ago

      It is, this infographic is wrong. Or I guess technically some other standard could define it like the infographic, but the Filesystem Hierarchy Standard defines it as a secondary hierarchy specifically for user data.

      • Avatar_of_Self@lemmy.world
        link
        fedilink
        English
        arrow-up
        5
        ·
        edit-2
        2 months ago

        /usr used to be the user home directory on Unix…well most of them. I think Solaris/SunOS has always been /export/home as I recall.

    • InverseParallax@lemmy.world
      link
      fedilink
      English
      arrow-up
      11
      ·
      2 months ago

      It did, let me explain:

      On the original (ie Thompson and Ritchie at Bell in 1969-71), I think it was a PDP-11, they installed to a 512kb hard disk.

      As their “stuff” grew they needed to sprawl the OS to another drive, so they mounted it under /usr and threw OS components that didn’t fit.

      https://landley.net/writing/unixpaths.pdf

      I’ve done the same, outgrew so you mount under a tree to keep going, it just never became a historical artifact.

    • HereIAm@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      2 months ago

      Huh. I did as well. Like /use/bin was for user installed applications and such. You learn something everyday.

  • Sonotsugipaa@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    19
    ·
    2 months ago

    It feels like /opt 's official meaning is completely lost on developers/packagers (depending on who’s at fault), every single directory in my /opt belongs to standalone software that should just be put into either /usr/lib or /usr/share with some symlinks or scripts into /usr/bin.

    • brianary@startrek.website
      link
      fedilink
      arrow-up
      11
      arrow-down
      2
      ·
      2 months ago

      There’s a little historical baggage, but look at Windows: multiple letters for drives, and all of the paths can be modified, so you have to ask Windows where any important directory is physically mapped (like SystemRoot or Documents or Temp or Roaming AppData or many others), because it doesn’t have this nice consistent structure like Linux. Linux presents a logical layer and manages the physical location automatically. Windows makes you do the logical lookup yourself, but doesn’t enforce it, so inexperienced programmers make assumptions and put stuff where the path usually is.

      That’s part of why logging in to Windows over a slow connection can take forever if you have a bunch of Electron apps installed: they’ve mismapped their temp/cache directory under the Roaming AppData, so it gets synched at every login, often GiB of data, and they refuse to fix it.

      • ByteOnBikes@slrpnk.net
        link
        fedilink
        arrow-up
        6
        ·
        2 months ago

        I switched to Linux a few years ago and you are not wrong.

        Windows is a nightmare with directory organization.

        Saved games can go:

        • My Documents/
        • My Documents/Games
        • My Documents/My Games
        • <app>/saved-games
        • Grass@sh.itjust.works
          link
          fedilink
          arrow-up
          7
          ·
          2 months ago

          I’m more used to seeing shit like: c:/users/username/appdata/local/developer/game/engine/data3/saves/profile0/epe90_cats90-slot203.nonstandardfileformat

          • jcg@halubilo.social
            link
            fedilink
            arrow-up
            5
            ·
            2 months ago

            And then their non standard file format turns out to just be a zip file or gzipped JSON data 😂