My own configuration files don't have to be dotfiles in $HOME
Back when I started with Unix (a long time ago), programs had a
simple approach to where to look for or put little files that they
needed; they went into your $HOME
as dotfiles, or if the program
was going to have a bunch of them it might create a dot-directory
for itself. This started with shells (eg $HOME/.profile
) and
spread steadily from there, especially for early open source programs.
When I started writing shell scripts, setup scripts for my X
environment, and other bits and pieces that needed configuration
files or state files, the natural, automatic thing to do was to
imitate this and put my own dotfiles and dot-directories in my
$HOME
. The entirely unsurprising outcome of this is that my home
directories have a lot of dotfiles (some of them very old, which
can cause problems). How many is a lot? Well,
in my oldest actively used $HOME
, I have 380 of them.
(Because dotfiles are normally invisible, it's really easy for them
to build up and build up to absurd levels. Not that my $HOME
is
neat in general, but I have many fewer non-dotfiles cluttering it
up.)
Recently it slowly dawned on me that my automatic reflex to put
things in $HOME
as dotfiles is both not necessary and not really
a good idea. It's not necessary because I can make my own code look
wherever I want it to, and it's not a good idea because $HOME
's
dotfiles are a jumbled mess where it's very hard to keep track of
things or even to see them. Instead I'm better off if I put my own
files in non-dotfile directory hierarchies somewhere else, with
sensible names and sensible separation into different subdirectories
and all of that.
(I'm not quite sure when and why this started to crystalize for me, but it might have been when I was revising my X resources and X setup stuff on my laptop and realized that there was no particular reason to put them in _$HOME/.X<something> the way I had on my regular machines.)
I'm probably not going to rip apart my current $HOME
and its
collection of dotfiles. Although the idea of a scorched earth
campaign is vaguely attractive, it'd be a lot of hassle for no
visible change. Instead, I've decided that any time I need to make
any substantial change to things that are currently dotfiles, I'll
take the opportunity to move them out of $HOME
.
(The first thing I did this with was my X resources,
which had to change on my home machine due to a new and rather
different monitor. Since I was basically
gutting them to start with, I decided it made no sense to do it in
place in $HOME
.)
PS: Modern Unix (mostly Linux) has the XDG Base Directory
Specification,
which tries to move a lot of things under $HOME/.config
,
$HOME/.local/share
, and $HOME/.cache
. In theory I could move
my own things under there too. In practice I'm not particularly
interested in hiding them away that way; I'd rather put them somewhere
more obvious, such as $HOME/share/X11/resources
.
|
|