Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

What is the Ubuntu equivalent to the Windows C:\Program Files folder? This is where Windows stores the system wide data for applications.

share|improve this question
2  
If you want to know where are the files of specific package, you can use Synaptic package manager. Just search for package, and see its installed files. –  Asmerito Feb 20 '11 at 8:17
2  
I think this question would be improved by a reason for wanting an equivalent. There is a difference between, for instance, "lets see what I have installed and what I can run", and "I'm trying to find the save-game of this/that piece of software, so I can fiddle with it" and maybe even "I suspect some setting-file / ini-file for this program that I can tweak". Those could all be "Program Files" question, but have different answers here. –  Nanne May 13 '13 at 9:03
1  
Related (but probably shouldn't be considered a duplicate): How to understand the Ubuntu file system layout? –  Eliah Kagan Jul 21 '13 at 2:43

8 Answers 8

/bin and /usr/bin is where the scripts are that start the programs. The direct equivalent of "Program Files" though is probably /usr/share. That directory contains the various support files for most programs.

Nautilus showing /usr/share

There probably isn't a direct equivalent however, since, for example, library files are shared across the system (in /lib) and options are either user specified (in the user's home directory) or universally located in /etc.

So installing a program via a deb file, repository or build will likely place files in all of these locations.

[EDIT] And as others note, there is also /sbin and /usr/sbin. Plus /usr/local/bin, /opt/bin and even /usr/games/. So definitely not a direct comparison to c:\program files!

share|improve this answer
3  
How about /opt? I've seen that hold many (usually closed-source or app-based) programs before in a similar way to Program Files. –  Kupiakos May 14 '13 at 0:12
    
Seems to be going that way, with the advent of the Ubuntu Software Centre delivering its games there, certainly. But even then, hardly a direct comparison, really, is it? Might the closest thing these days though. –  Scaine May 14 '13 at 23:03
    
See askubuntu.com/a/294492/41499 for what the /opt directory is for. –  Gerhard Burger Jul 5 '13 at 6:36

The kind how Linux and Windowsprograms are installed is quiete different.

The common pattern on Windows is, that a program or a bunch of programs from one vendor go into a subdir in C:\programs\vendor or something similar.

On Linux, your files are mostly split: There is one dir for libs, one for icons, one for help, one for logfiles and so on.

You need all of them or many of them, but they aren't coupled together, but together with similar files from different programs.

So the answer is: There is no equivalent.

share|improve this answer

The C:\Program Files folder would be /usr/bin in Ubuntu. /bin looks more like C:\windows.

From the manual page of the filesystem hierarchy:

/bin      This directory contains executable programs which are needed  in
          single user mode and to bring the system up or repair it.
/usr/bin
          This is the primary directory  for  executable  programs.   Most
          programs  executed  by  normal  users  which  are not needed for
          booting or for repairing the system and which are not  installed
          locally should be placed in this directory.

Ubuntu has a different structure than windows. Ubuntu places almost all applications in one directory, say /usr/bin. Windows would make a new folder, say Mozilla Firefox, and add configuration, executables, DLL's, images, etc. in it. Ubuntu splits them up, executables go in /usr/bin, system-wide configuration in /etc, shared objects in /usr/lib, images in /usr/share, ...

share|improve this answer

In this answer when I say Unix I mean Unix as well as Unix-like operating systems.

Ubuntu doesn't really have a programs folder containing all of the data for each program. In Unix and Unix-like operating systems, EVERYTHING is a file, even the terminal commands. They're files as well. The way Unix handles programs can be pretty chaotic, and organized at the same time.

Icons for programs are stored in /usr/share/icons/*, program executables are usually stored in /usr/bin, /bin, and other places with bin directories (bin is obv short for binary). Libraries that programs depend on are in /lib.

So you end up with not a directory containing all of the data for one program, but the data for the program spread out. While at first this seems very disorganized, it allows for sharing of standard things like libraries and icons.

Thanks to permissions for each file, the idea of everything being a file is very brilliant to be honest. It makes Unix MUCH more secure than other operating systems.

share|improve this answer

There is no single directory that is the exact equivalent of Program Files folder. The way Linux arranges things is a lot different than Windows.

In windows, every program that we install gets its own directory inside the Program Files directory. In that directory, further sub-directories are created for different kind of files. There is no fixed structure for sub-directories. Programs decide for themselves what they want to call each directory and where they want to put what.

But in Linux when a program is installed, different kind of files are copied to different locations. Executables are copied to /usr/bin, library files to /usr/lib, documentation to one or more of /usr/man, /usr/info and /usr/doc. If there are configuration files, they are usually in the user's home directory or in /etc.

share|improve this answer

Look in /bin, /usr/bin, and anything else that says bin.

share|improve this answer

There is no easy answer.

/bin,/usr/bin, and /usr/share

As mentioned in the other answers, you can find most executables under /bin or /usr/bin, and the support files are installed in /usr/share.

/usr/local and /opt

There are however more directories in which Ubuntu installs applications. The PATH variable, which determines where to search for an entered command, might give you a clue, mine looks like (echo $PATH in a terminal):

/usr/local/cuda/bin:/usr/local/texlive/2012/bin/x86_64-linux:/usr/games:/home/gerhard/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

As you can see some software is installed in /usr/local and have their own bin. Another place where many programs are installed is /opt. The properties of these locations are explained by the Filesystem Hierarchy Standerd, which is a very good read. Unfortunately, the difference between /opt and /usr/local is not very well explained, someone on the unix stackexchange had a more elaborate explanation:

  • /usr/local is a place to install files built by the administrator, usually by using the make command. The idea is to avoid clashes with files that are part of the operating systems that would either be overwritten or overwrite the local ones otherwise. eg. /usr/bin/foo is part of the OS while /usr/local/bin/foo is a local alternative,
  • /opt is a directory to install unbundled packages each in their own subdirectory. They are already built whole packages provided by an independent third party software distributor. For example someapp would be installed in /opt/someapp, one of its command would be in /opt/someapp/bin/foo [and then usually a symbolic link is made in one of the bin directories in the PATH, or the program is called from a desktop file (see below)].

Finding a specific program or command

.desktop files

To find out where a specific program is installed, you can do a number of steps. First you need to locate its .desktop file. Desktop files are simular to shortcuts in Windows, and they are located in /usr/share/applications. Take for example Google Chrome, which has the desktop file /usr/share/applications/google-chrome.desktop and look for the line that starts with Exec=, this determines how to start Google Chrome. It says:

Exec=/opt/google/chrome/google-chrome

So you know Google Chrome is in /opt.

Now for Mozilla Firefox which is located in /usr/share/applications/firefox.desktop. It simply says

Exec=firefox %u

At first this doesn't seem to help that much, but then you realize that firefox must be in a directory that is in the PATH variable (most likely a bin), and we can look it up (see below).

Looking up commands

To look up commands you can use one or more of the following: type, which and whereis (I've included a link to their manual pages online).

  • type: it describes a command, and indicates how it would be interpreted if used as a command name. Possible types for a command are:

    1. alias (shell alias)
    2. function (shell function)
    3. builtin (shell builtin)
    4. file (disk file)
    5. keyword (shell reserved word)

    (type itself is a builtin bash command command, try it with type type :P)

    Executing type firefox gives us

    firefox is /usr/bin/firefox
    

    which is what we wanted to know

If a command is a file (which you checked with type) you can then also use:

  • which: shows the full path of the command,

    Executing which firefox gives us

     /usr/bin/firefox
    
  • whereis: locate the binary, source, and manual page files for a command.

    Executing whereis firefox gives us

    firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/lib64/firefox /usr/bin/X11/firefox /usr/share/man/man1/firefox.1.gz
    

Bonus

You can inspect /usr/bin/firefox closer with ls -l /usr/bin/firefox and this gives:

/usr/bin/firefox -> ../lib/firefox/firefox.sh*

It appears that /usr/bin/firefox is 'only' a symbolic link to the script /usr/lib/firefox/firefox.sh. If you inspect the script you discover that the script calls /usr/lib/firefox/firefox.
You may rest in peace now :)

share|improve this answer

Linux 'Program Files' are in the whole hierarchy. It could be on /usr/bin, /bin, /opt/..., or in another directories.

I think you are going to find some file related to your application. Then, I have an idea on how to looks files which are installed on program installation.

  1. Install synaptic by issuing sudo apt-get install synaptic on terminal.
  2. Look for package you want, search on the search text input.
  3. Right-click the package and select Properties.
  4. Move to Installed File tab.
  5. There you find them all.

It is because linux move the installed file to directories separately based on their type.

  • Executable goes to /usr/bin or /bin.
  • Icon goes to /usr/share/icons or on ~/.local/share/icons for local.
  • Whole application (portable) on /opt.
  • Shortcut usually on /usr/share/applications or on ~/.local/share/applications
  • Documentation on /usr/share/doc
  • Library / module on /usr/lib

And many other directories. (CMIIW, accepting correction)

share|improve this answer

Your Answer

 
discard

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