Dotfiles for the Bashful.
Tags: dotfiles, terminal, shell, git
Published: 2019-10-04 00:49:29

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/t9nh00jorfis4ig26uns.gif)

Not sure what dotfiles are, or maybe you're just feeling a little `bash`-ful about sharing yours?  Simplistically speaking, the term 'dotfiles' refers to hidden files on *nix based filesystems.  However, the concept of dotfiles has grown to mean much more.  It's kinda like how 'the cloud' has grown to mean more than the source of Purple Rain, or how 'the web' has grown to mean more than Shelob's Frodo trap.  To many on the world wide web, dotfiles are the precious configuration files crucial to enjoying your daily workflow 🛠

Whether it be command line aliases, Git config, Vim mappings, or misc application settings, the sky is the limit!  Anything you customize or configure is generally stored _somewhere_ on your filesystem.  If you can find where it's stored, you can throw it in a [Git](https://gettinggit.com/) repo, push it to [Github](https://github.com/), and [share it](https://github.com/jesseleite/dotfiles) with the world.  Why publish your dotfiles though?

## That syncing feeling.

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/k1tth1yzd8lz0dnx5958.gif)

As you build up a repertoire of command line aliases and application configs, you'll want to back this stuff up for the next time you need to setup a machine.  You can always print out your dotfiles and store them in your grandmother's fireproof safe, but I recommend just pushing a repo to the cloud.

What are you going to do if your machine ever pulls a Freddie and bites the dust?  Or maybe your machine is humming along just fine, but you decide it's finally time to upgrade the old 386?  Or maybe you bounce back and forth between two machines and need an elegant way of syncronizing configurations between environments?  With a published dotfiles repo, you can clone that baby down and symlink each config file into it's proper place.

### Tip:

I highly recommend symlinking your individual dotfiles over copying.  As you make changes, you'll want the ability to commit and push without having to wangjangle your changes back into your dotfiles repo.  <a href="https://github.com/anishathalye/dotbot">Dotbot</a> is a great tool that makes bootstrapping your dotfiles easy 🤙

## Sharing is caring.

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/lo4886zlp0yxqmry6uh4.gif)

I would argue the more important reason to publish your dotfiles is for the purpose of sharing.  Have you ever learned anything on the internet?  I've learned some of the best puns, the dankest memes, and the nerdiest dotfiles tricks, all on the internet.

It doesn't matter whether you're just starting out with your first few command line aliases, or whether you have a diverse array of disorganized config files.  Why keep it all to yourself?  I'm not proud of everything in my dotfiles, but we learn from each other, and sharing has certainly benefitted me in many ways 💞

## Steal honey, not the beehive.

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/673r83ykfttyrm6xy7sv.gif)

Remember, dotfiles are highly personal.  You won't learn as much by forking someone's dotfiles repo.  Instead, _stalk_ others' dotfiles.  Ask your colleagues if they publish their dotfiles.  Browse your heroes' dotfiles.  Steal some honey, then spark a friendship by sliding into their DMs to thank them for the honey 🍯

Not sure where to start?  Here are some resources for inspiration:

- [My dotfiles.](https://github.com/jesseleite/dotfiles)
- [Bootstrap your dotfiles with Dotbot.](https://github.com/anishathalye/dotbot)
- [More dotfiles repos and resources.](https://dotfiles.github.io/)

## Like this article?

Please [give me a follow](https://twitter.com/jesseleite85) ❤️