57

What is the Linux equivalent of Windows Registry? If there is no equivalent or similar structure in Linux, how are the things that are done by the Windows Registry handled in Linux?

53

Linux applications typically store their config in a text-based file specific to the application. Machine specific configs are typically stored in the /etc directory tree. User specific settings are typically in the users' home directory and often in "hidden" files that start with a "." (use 'ls -a' to see them).

  • 5
    We could also add that those text files are human readable and often include comments in them that describe the particular configuration item. So the documentation is often right there in front of you when you need to change something. You can add your own notes as well, for example why you changed something. The Windows registry holds no such "metadata". – Keith Jun 11 '11 at 9:01
  • Surely this answer is flawed because the purpose of the registry Is not to hold settings but to register components such as dlls and shell extensions with the operating system. Storing program configuration in there Is a frowned upon technique. – Adam Casey Jun 11 '11 at 10:00
  • 12
    Not sure about "frowned upon" but it is regularly done. Most MS programs and many 3rd party store config data there. – uSlackr Jun 11 '11 at 13:26
  • 7
    @Dotmister: That was its purpose indeed... in the days of Windows 3.1. Starting with 32-bit Windows (95 and NT), the Registry became a database for configuration data. – grawity Jun 11 '11 at 19:01
  • Heh... so Linux essentially does what the Windows Registry was designed to prevent? – Iszi Dec 11 '13 at 19:38
11

/proc for kernel related stuff

/etc for software related stuff

Gnome config can be considered similar to Windows Registry as well.

But since Linux and Windows core philosophies are diametrically different (Linux ~ open and compatible, Windows ~ closed and obstructive), there is no direct parallel.

Edit: for those who disagree, here is a bit of history for you: http://www.faqs.org/docs/artu/ (awesome reading, no matter what your background is)

  • 27
    I don't see what software design philosophy has to do with the particularities of specific implementations of configuration storage. The reason there isn't a direct parallel is because they're fundamentally different architectures, not just because Microsoft hates freedom. – Shinrai Jun 10 '11 at 21:36
  • 7
    @Shinrai The fundamental design philosophy of Unix (and Linux) is using standardized text formats. Windows Registry is a proprietary binary format. "Microsoft hates freedom" is totally out of context here. Windows was designed to be as much incompatible with Unix as possible and ignored all possible international standards (while creating it's own). This is old history, but this is where Windows registry comes from. – Let_Me_Be Jun 10 '11 at 22:00
  • 7
    @Let_Me_Be - I'm sorry, your wording read me to think that you meant "Open source is the best! Microsoft is evil incarnate!" like so many *nix fanatics on the web, rather than a discussion of the literal format of the content. Comment withdrawn, but you might reword to be a little clearer since a few people seem to have read it just like I did. (I think 'obstructive' especially gives the wrong impression here.) – Shinrai Jun 10 '11 at 22:10
  • 12
    @Let_Me_Be: Standartized text formats? You must be joking. Windows sucks in many ways, but a common Registry API is one thing it does well. – grawity Jun 10 '11 at 22:22
  • 7
    @Let_Me_Be: The word was "standartized", not "documented". I'd rather distribute one .reg file (or .ini, .xml, .json, whatever you wish) over X machines than have to regexp the hell out of twenty different config files in /etc/ while trying to change network-wide settings but retain unrelated local additions... while you won't find perfectly detailed explanation for Windows registry hives, their structure is not entirely a secret. (leaves the flamewar) – grawity Jun 10 '11 at 23:03
7

System wide settings are located in files in /etc, per user settings are typically located as hidden files (start w/ a .) in the users home directory. For more information about a specific program see it's man page - man [program name].

  • Might want to mention .*rc files in the user's home directory. /etc is just the system-wide stuff. – Mike DeSimone Jun 11 '11 at 4:09
5

Most applications use text-based configuration files (usually each program has its own format, although some use XML or JSON). System-wide configuration is kept under /etc.

User configuration is usually stored in the user's home directory, in so-called "dot files" (filenames starting with a "."; use ls -a to display them). To avoid "dotfile creep", recently programs have started keeping their configuration in ~/.config/ per XDG Base Directory specification.

Various desktop environments have their own Registry-like APIs: Gconf (deprecated) and dconf/GSettings (new) in GNOME; Xfconf in Xfce.

3

It's split on Linux. There is not one single place.

For programs run by users, it's usually in $HOME/.someprogramrc if it's a file, or $HOME/.somedirname if complicated enough to warrant a subdirectory. KDE apps all find subareas of $HOME/.kde I believe, usually not generating their own dir.

The common action for listing directories is to treat files starting with . as hidden, so you'll need to use ls -A from the command line, or use the show hidden files setting of your gui.

For programs run by the system, it's usually a file someplace in /etc/ There's not a true naming convention in etc, though directories are usually signified by .d at the end.

For the kernel, it's in /etc/sysconfig.conf, or a startup script in /etc/init.d that writes to /proc/sys/*

Most system configs are in /etc to make it easier to back up a system. By holding only config files and not binaries, /etc/ therefore tends to be small.

0

There is no Registry in linux. But you should take a look at gconf-editor and dconf-editor ... and also hidden files/folders inside your home directory (with names starting with dot), mostly plain (TXT) files containing some configuration for a specific program.

-1

The Windows registry was created to automate the various .ini and other configuration files for operating system and programs so that it would load faster. All of the information in the registry is also contained elsewhere in the computer but today they are usually write protected. Linux uses Vi (visual editor) or other editor to access these configuration files in Linux to edit them.

  • 2
    Hello and welcome to superuser.com. Although I believe what you are trying to tell the poster is correct, it does not come out very well in your answer. Unless you have a decent understanding of how Linux and Windows work, I believe it is difficult to understand what you are trying to get at. Please rethink and rewrite your answer so that anybody can understand it. – Mogget Dec 11 '13 at 19:50
-1

Windows: - Stores the data in files within the directory hierarchy - These files are like the mentioned .dll and other supporting files - Then the files are managed through management systems like databases (the Registry) to provide easier interaction with the user(s). - This means we point and click, but TONS of data is recorded in the background for ease of use, faster accessibility and unnecessary data storage in the name of easier usage.

Linux: - Files are stored in the separated partitions (we have to remember, in Linux, we can access hardware more directly, including the screen - everything is accessible through the CLI). - These files are in the directory hierarchies already in place (in the storage system of the OS, similar to Windows but not just separated by folders) - The files are more readable, easier to access, but they require the knowledge of the CLI's to be able to utilize them.

Primary Difference: Windows adds the databases "layer" to the OS interface to manage the interactions from the user, system, etc. This makes it "easier" to utilize the GUI to access and perform everything, but it also makes the user and system highly dependent on this database system for most functionality. Linus on the other hand, allows direct interfacing with the components, meaning you are having to know the "language" to type in lieu of the Windows point-and-click methods. Yes, you can utilize a CLI through Windows, but then you are not truly comparing the Windows to Linux comparison. The differences are in how the user accesses the data, how the system utilizes the data, and how Windows simply adds more "management" (by the system) to produce an "easier" interface than knowing your way around a command line.

It is an understandable comparison to assess as someone new to the CLI/Linux environment, but it makes a lot more sense when you apply the intent of both of these systems first. Linux is not "subverting the attempts Microsvck has made with the integration of a Registry", it is giving the user more power by eliminating layers of abstraction between the user and the hardware.

To imagine this, think of a typewriter. You press the keys, they move the gears and you hammer the ink to paper producing data. In Linux, a user enters commands to interface with the system kernel to perform actions in the hardware. In a Windows environment, you have more potential layers between the user and the hardware. Applications can invoke commands which communicate with the OS, which interfaces with the system/kernel, which then works with the hardware. This process becomes more complicated in Windows as more variables enter the equation, like the commands having to interact with the Registry to retrieve information prior to being able to execute things... and this is why Windows uses more resources to run, do basic and complex tasks. Preloaded services and processes are loaded to allow management of functions that Linux would require the user to invoke. And yes, there are processes that run in Linux, but I am trying to just give a basic idea of how the systems differ to better display why some other comments have been inaccurate. The idea of using Linux is to minimize the interfaces between user and hardware, keeping things simpler with much less clutter. Windows tailors to the users and tries to encompass more functionality in a more easily accessible way, but it comes at the cost of complex management systems (that can easily become cluttered and problematic). The Registry can also provide a digital trail of all physical connections and other physical interactions with hardware that is just saved and saved (unless cleaned by a user/program). I'd prefer to have readable files that I can manually delete when not used, compared to cleaning the various/many spots needing regular cleaning in Windows (and potentially risking BIG problems b/c of the Registry). It is just another layer to manage things behind the scenes and establish more of a digital trail that the user gets stuck storing.

Unfortunately, many users are conditioned to Windows and are too fearful of Linux prior to trial. There are so many flavors, some having differing commands, shells, etc. which becomes difficult to choose as a beginner. Once we remove our "Windows conditioning", it becomes clearer that Linux distros are superior in many ways (w/o the bloated software). The only scenario I personally feel Windows is superior for is playing games. It becomes more disturbing as MS pushes more to unify to 1 OS at a time, always wanting to get more data from you. It is a good skill to have, and playing with a Linux distro can potentially answer these questions for new users reading these posts.

  • 3
    This reads like a rant rather than an answer. It is doubtful whether it even tries to actually answer the question as asked. It is also outright wrong in several places. (Files in Linux stored on separate partitions? Files in Linux requires knowledge of the CLI to access? Linux eliminating hardware abstraction compared to Windows? Linux users interacting directly with the kernel? Really, WTF?) I encourage you to take the site tour to learn how we do things and to read through How do I write a good answer for suggestions. You can then edit this. – a CVn Jul 31 '16 at 14:11
  • 1
    @MichaelKjörling: although you are right about the quality of this answer, it contains one thing which is very important: the Windows registry (regedit program) is one application, showing the internals as if they were stored within one configuration database, while indeed those files are spread all over the PC. This transforms the original question into "Is there a Linux tool which gives a summary of the overall configuration of the machine, something like regedit in Windows?" – Dominique Apr 4 '17 at 9:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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