Mastering Dotfiles Management with GNU Stow

Published on


When you work on a computer, you often have specific preferences for how your applications or shell environment should behave. For example, you may prefer a certain color scheme in your terminal, or you may want to have specific aliases for common shell commands.

These preferences can be set using configuration files, which are often referred to as dotfiles. The name "dotfiles" comes from the fact that these files have a filename starting with a dot, which makes them hidden by default.

However, managing dotfiles can be challenging, especially when you have multiple machines or want to share your dotfiles with other users. This is where GNU Stow comes in, which is a tool that simplifies the management of dotfiles.

I personally use this method for managing dotfiles, you can check it out at AkashRajpurohit/dotfiles

What are dotfiles?

Dotfiles are configuration files that are used to customize the behavior of applications or the shell environment. These files are often located in the user's home directory, and their names start with a dot to make them hidden. Some common examples of dotfiles include:

  • .bashrc / .zshrc: Configures the behavior of the Bash / Zsh shell.
  • .vimrc: Configures the Vim text editor.
  • .gitconfig: Configures the behavior of the Git version control system.

GNU Stow project

GNU Stow is a free, open-source tool that simplifies the management of dotfiles. It works by creating symbolic links from the dotfiles in a separate directory to the corresponding files in the user's home directory. This makes it easy to manage dotfiles across multiple machines or to share them with other users.

Setting up dotfiles with GNU Stow

To set up your dotfiles using GNU Stow, follow these steps:

Create a directory to store your dotfiles. For example, you can create a directory called "dotfiles" in your home directory.

mkdir ~/dotfiles

Create a subdirectory for each application or environment you want to customize. For example, you can create a subdirectory called "zsh" for your Zsh shell configuration.

mkdir ~/dotfiles/zsh

Move your configuration files to the corresponding subdirectory. For example, you can move your .zshrc file to the "zsh" subdirectory.

mv ~/.zshrc ~/dotfiles/zsh/

Use GNU Stow to create symbolic links from the dotfiles in the "dotfiles" directory to the corresponding files in your home directory.

For example, to create a symbolic link for the "zsh" subdirectory, run the following command:

cd ~/dotfiles
stow zsh

Now, any changes you make to your dotfiles in the "dotfiles" directory will be reflected in your home directory.


Managing dotfiles can be a hassle, but with GNU Stow, it becomes a breeze. By creating symbolic links to your dotfiles, GNU Stow simplifies the process of managing your configuration files across multiple machines or sharing them with other users.

With these simple steps, you can easily set up and manage your dotfiles using GNU Stow.

Updates straight in your inbox!

A periodic update about my life, recent blog posts, TIL (Today I learned) related stuff, things I am building and more!

Share with others

Liked it?


You may also like

  • gitengineering

    5 Basic Git Commands Every Developer Must Know

    Learn the top 5 basic git commands with examples that you must know as a developer in 2020.

    6 min read
  • system-designdatabase

    Master-Slave Replication: Scaling Your Database for High Availability

    As businesses grow, their databases can become overloaded and slow, leading to a poor user experience. To address this issue, database administrators can use a system called master-slave replication, which allows for multiple copies of a database to be distributed across different servers. In this article, we'll explore the concept of master-slave replication, how it works, and why it's important for achieving high availability in your database.

    3 min read
  • system-designdatabase

    Exploring Master-Master Replication in Databases: How It Works and Its Benefits

    Master-master replication is a powerful technique that can help you improve the availability and scalability of your database system. But what exactly is master-master replication, and how does it work? In this article, we'll explore the details of this technique, including its benefits and some real-world examples.

    4 min read