Skip to content

My public configuration files, shell scripts, and more

License

Notifications You must be signed in to change notification settings

openjck/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

667 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

These are my public configuration files, shell scripts, and more. Nothing here is especially groundbreaking or innovative, but I take pleasure in crafting small, useful, beautiful tools with great love and care and with great attention to detail. I'm sharing these things for the benefit of others, and I sincerely hope others find them useful.

My shell scripts are well-documented, and readers may also be interested in my methods of organization, my Bash functions, my Neovim configuration, my tmux configuration, and my Git configuration, among other things.

Shell scripts that might be useful to others are stored in the bin/general directory, whereas shell scripts that reflect my personal needs are stored in the bin/personal directory. The .config/bash/init/functions directory contains little utilities that are also unlikely to be of direct use to others, as well as utilities that cannot realistically be implemented as shell scripts. (Some things, like shadowing another command or navigating with cd, are difficult or impossible in to achieve in a shell script.) That said, some of the utilities in .config/bash/init/functions could be re-implemented as shell scripts, and they may be more useful to others if they were. I hope to rewrite those utilities as shell scripts in the future.

I'm very pleased with the organization of those utilities. I've tried many methods of organizing aliases and functions, but this method, inspired by fish, feels the most natural. No aliases are used. Everything is a function, and every function has its own file.

One weakness with the organization of my Bash configuration is that loading an interactive shell is pretty slow, relative to loading an unconfigured Bash session, taking about 1-2 seconds on my laptop. That poor performance may have something to do with how many files need to be read, although a quick experiment in concatenating the files did not seem to speed things up dramatically. Some day, if it becomes a real problem, I could look into adding a build step for the Bash configuration that concatenates and/or minifies all text into a single .bashrc file. For now, it's not worth the effort. Waiting two seconds for a Bash shell to load is never a meaningful bottleneck for me.

To ask questions or discuss these files, please use the Discussions page.

Installation

Everything

Follow these steps to install all of these files:

  1. Ensure sudo is installed and your user is able to run sudo commands successfully.
  2. Download the dotfiles-openjck-setup-bootstrap script.
  3. Make dotfiles-openjck-setup-bootstrap executable.
  4. Run dotfiles-openjck-setup-bootstrap.

Single shell script

See the shell script documentation for information on how to install a single shell script.

Usage

See the shell script documentation for information on how to use shell scripts.