If you're thinking about bookmarking or linking this page, maybe go for the main config instead. I try, but down here in the details it's a bit of a mess. Individual files get renamed. Lots.

GNU Bash Configuration


I use my ~/.profile to set environment variables and load config for assorted package managers.

#- file:profile
#!/usr/bin/env bash

export PAGER="less -FRX"

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then

eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"

if which nvim > /dev/null; then export EDITOR="nvim"; fi

if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi
if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi

eval "$(rbenv init - bash)"

export PATH="$HOME/.plenv/bin:$PATH"
eval "$(plenv init -)"

. "$HOME/.cargo/env"

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
	. "$HOME/.bashrc"


#- file:bashrc
#!/usr/bin/env bash

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar

# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
. "$HOME/.cargo/env"

eval "$(/home/random/.rakubrew/bin/rakubrew init Bash)"

eval "$(starship init bash)"


#- file:bash_aliases
alias realias='$EDITOR ~/.aliases; source ~/.aliases'

alias bbd='brew bundle dump --force --describe --global'
alias be='bundle exec'
alias blf='beet ls -f "$BF" album+ track+'
alias dnuke='docker kill $(docker ps -q);docker system prune --all --volumes -f'
alias e='emacs -nw'
alias kexp='mplayer http://live-aacplus-64.kexp.org/kexp64.aac'
alias ll='lsd -lF'
alias l='lsd -lahF'
alias ls='lsd'
alias pr='poetry run'
alias pri='poetry run invoke'
alias rire='ripit && beet import ~/mp3 && rmdir ~/mp3 && eject'
alias tsite='task project:Site'
alias tt='task +ticket'
alias ttw='task +ticket +Work +prl'
alias tw='task +Work +prl'
alias unflicker='xrandr --output DisplayPort-0 --mode 2560x1440 --rate 59.95'
alias ymd='date +"%Y%m%d"'