Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

One of the things that really slows me down in catching on with Linux is the huge difference between the file system in Linux versus Windows. Up until the last 3-4 years I only used Windows systems and its only been the last 2-3 months that I've really worked at getting accustomed to Linux. I think one of the things that really bothers me at this point is that I felt like I could find just about anything I wanted to when I began digging through the various folders in Windows. I had become accustomed to what kinds of things were placed where and when. I don't have that with Linux. I'm learning a few things like the /opt folder is where most third-party programs get installed... but my understanding is limited. What things are important to know to really understand the file system and to be able to locate different files and programs and such?

share|improve this question
2  
You may be interested in pathname.com/fhs/pub/fhs-2.3.html –  ninjalj Mar 18 '11 at 0:16
    
This is perfect! –  Kenneth Mar 18 '11 at 0:19
add comment

3 Answers 3

up vote 12 down vote accepted

Have a look at the Filesystem Hierarchy Standard (FHS), which is a standard of organising directory structure. I strongly suspect most (all?) Linux-based systems more or less follow it.

share|improve this answer
    
Vote up for linking useful documentation, this is more useful than a long answer. The only problem is that not every tool/command/program follows it =/ –  D4RIO Mar 18 '11 at 14:45
add comment

In some *nix distributions (tested on OpenBSD and Ubuntu) the man page for the file system hierarchy can be useful.

$ man hier

Of course, this will vary depending on platform and how up to date the manual pages are. The man page (on Ubuntu) also references the Filesystem Hierarchy Standard that was pointed to earlier.

I did not find a similar manual entry on solaris.

In general, different linux distributions are free to put things wherever they want to, so it can get confusing quickly. Most executables that the system installs (either as part of the base system or through a package manager) will end up somewhere in your default path (usually in /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin) though some distributions use /opt, /usr/share/bin, among others. A parallel could be drawn to the "Program Files" folder in windows. The "Windows" folder could be somewhat like /usr/lib /usr/include /usr/share and others. Your "My Documents" folder is somewhat parallel to your home directory on linux (/home/user) with the nice addition that most user specific configurations for programs like firefox, thunderbird, etc live here making moving to a new system fairly painless.

The problem with these parallels is they are not exactly accurate. Windows and linux are different in this respect.

The best way forward is to continue poking around with the system, as you probably did when you first started using windows, break things, fix them, ask questions along the way.

share|improve this answer
add comment

In Windows when you install a program, it creates a folder in Program Files that contains everything. It has the binaries, the libraries, the resource files, etc. In Linux, binaries usually go in /usr/bin, libraries go in /usr/lib, and resources go in /usr/share. Specifically with like an icon file, that would go in /usr/share/icons. Fonts can be found in /usr/share/fonts. Development headers go in /usr/include, and lastly, configuration files go in /etc.

This layout has some cool advantages. By putting libraries into /usr/lib, it's much easier to share libraries between applications. In Windows, it's typical to see each program install their own set of libraries into Program Files, and another app may install the same exact library so now you have two exact copies of a .dll file. It also add some consistency to the filesystem layout. In Windows, you know the program will have a folder in Program Files, but there's no guarantee on how it's layed out inside that folder. Maybe the executables will be in a bin/ folder, maybe not. Maybe it will have a conf/ folder, again maybe not.

share|improve this answer
1  
You should consider that there are several directories of binaries depending on its purpose. You have /bin (general purpose, system binaries), /usr/bin (user programs, sometimes linked from /opt), /sbin (superuser binaries, administrative tools, this dir is not in the users PATH), etc... –  D4RIO Mar 18 '11 at 14:39
    
A big disadvantage of the layout where parts of the application get written everywhere is when you have common files written and then subsequently you want to uninstall one of the applications. You then run into the DLL hell that windows successfully got away from. –  Καrτhικ Dec 18 '13 at 12:33
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.