1. j
  2. cmd



Dotfiles and command-line tools

This repository contains my "dot" files and other command-line tools. While I may have others that I choose to selectively install in a particular environment, the files in this repository form the baseline and are among the first components to be installed setting up a new environment.


I use Mac OS X as my primary development environment, deploying most frequently to virtualized Debian-based Linux server instances. These tools reflect that set-up, so you may need to change things around to suit your particular environment(s).


You will definitely need:

  • a compiler (Xcode for OS X, build-essential for Debian)



You can either manually copy over the files that you find useful, or you can get the whole enchilada in a new environment via one of two bootstrap methods.

The quickest method is to simply copy and paste the following commands into a terminal window.


/bin/bash "$(curl -fsSL https://bitbucket.org/j/cmd/raw/tip/etc/bootstrap.sh)"
source ~/tools/etc/link && updatevim


wget -qO /tmp/bootstrap.sh https://bitbucket.org/j/cmd/raw/tip/etc/bootstrap.sh && /bin/bash /tmp/bootstrap.sh
source ~/tools/etc/link && updatevim

Slightly more manual method, which requires Mercurial to already be installed:

hg clone https://bitbucket.org/j/cmd ~/tools
source ~/tools/etc/link && updatevim

The prompt-driven bootstrap script should be idempotent, optionally installing tools such as:

File and directory structure

In an effort to preserve tool isolation, the bootstrap script will install certain third-party components to ~/.local.

I store my versioned command line tools in a folder (~/tools) that in turn contains several sub-folders (bin etc lib) to help keep the files organized. Since I link (etc/link) the dot files to the root of my home folder, I prefer to store them without the prepended dot ("hgignore" rather than ".hgignore"). I add the dot when creating the symlink. So if you use any of those files, make sure you put the dot back.



I change these files frequently, and sometimes I may break things that worked just fine beforehand. If you find something that doesn't operate as optimally as it could, please let me know.