summaryrefslogtreecommitdiffstats
path: root/config/bash/bashrc
diff options
context:
space:
mode:
authorMitsuo Tokumori <[email protected]>2023-11-24 00:31:06 -0500
committerMitsuo Tokumori <[email protected]>2023-11-24 00:31:06 -0500
commite900c217c1e50a4067384c9bb3fe43dff61986c6 (patch)
treec12b723d503c2aefa2403aecb9e6488af1eea90c /config/bash/bashrc
parentd42c7eeec0ce9af6f9ff5ce501316e6a8c5e43b3 (diff)
downloaddotfiles-e900c217c1e50a4067384c9bb3fe43dff61986c6.tar.gz
dotfiles-e900c217c1e50a4067384c9bb3fe43dff61986c6.tar.bz2
dotfiles-e900c217c1e50a4067384c9bb3fe43dff61986c6.zip
Restructure dirs to mimic XDG base dirs
Non XDG base directories have a leading '_'.
Diffstat (limited to 'config/bash/bashrc')
-rw-r--r--config/bash/bashrc160
1 files changed, 160 insertions, 0 deletions
diff --git a/config/bash/bashrc b/config/bash/bashrc
new file mode 100644
index 0000000..7f0abff
--- /dev/null
+++ b/config/bash/bashrc
@@ -0,0 +1,160 @@
+#
+# ~/.bashrc: executed by bash(1) for interactive shells
+#
+# Tinkerer's guide to a prettier and colorful CLI:
+# https://wiki.archlinux.org/title/Color_output_in_console
+
+# If not running interactively, don't do anything
+[[ $- != *i* ]] && return
+
+# TROUBLESHOOTING
+# ===============
+
+export EDITOR=nvim
+export VISUAL=nvim
+export TERM=xterm-256color # Required for AWS VPS work good when SSHing
+
+# https://wiki.archlinux.org/title/GnuPG#Configure_pinentry_to_use_the_correct_TTY
+export GPG_TTY=$(tty)
+gpg-connect-agent updatestartuptty /bye >/dev/null
+
+
+# Bash configuration
+# ==================
+
+# don't put duplicate lines or lines starting with space in the history.
+# See bash(1) for more options
+HISTCONTROL=ignoreboth
+
+# append to the history file, don't overwrite it
+shopt -s histappend
+
+# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
+HISTSIZE=1000
+HISTFILESIZE=2000
+
+# check the window size after each command and, if necessary,
+# update the values of LINES and COLUMNS. (Isn't this the default behaviour?)
+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)"
+
+# colored GCC warnings and errors
+#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
+
+# Alias definitions.
+if [ -f ~/.bash_aliases ]; then
+ . ~/.bash_aliases
+fi
+
+# Don't forget to install bash-completion
+
+# Disable CTRL+S and CTRL+Q keybindings
+# (used to pause and resume output to terminal)
+# See: https://unix.stackexchange.com/a/137846/347754
+# https://unix.stackexchange.com/a/73499/347754
+stty -ixon
+
+
+# Prompt
+# ------
+
+# - Basic [user@host $pwd]$
+#PS1='[\u@\h \W]\$ '
+# - Blue timestamp and italic green pwd
+#PS1='\[\033[34m\]|\D{%H:%M:%S}| \[\033[3;32m\][\w]\[\033[00m\]\n\$ '
+
+# - user@host pwd (git prompt)
+# Ref.: https://stackoverflow.com/a/15398153/7498073
+source ~/.git-prompt.sh
+PS1='\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ '
+
+
+# Environment
+# ===========
+
+# FIXME: This is executed twice. One just after login (first bash) in tty. And
+# again then again in the terminal emulator.
+PATH="$HOME/.local/bin:$PATH"
+PATH="$HOME/mahcode/bin:$PATH"
+PATH="$HOME/code/tex-live-native/build/bin/x86_64-linux:$PATH"
+export PATH
+
+export MANPATH="$HOME/code/tex-live-native/build/texmf-dist/doc/man:$MANPATH"
+export INFOPATH="$HOME/code/tex-live-native/build/texmf-dist/doc/man:$INFOPATH"
+
+# XDG = Cross-Desktop Group
+# For more info see https://wiki.archlinux.org/index.php/XDG_Base_Directory
+export XDG_CONFIG_HOME="$HOME/.config"
+export XDG_CACHE_HOME="$HOME/.cache"
+export XDG_DATA_HOME="$HOME/.local/share"
+export XDG_STATE_HOME="$HOME/.local/state"
+
+export LC_COLLATE=C
+
+# fcitx5 (input method)
+export GTK_IM_MODULE=fcitx
+export QT_IM_MODULE=fcitx
+export XMODIFIERS=@im=fcitx
+
+# less
+LESS="-i " # ignore case
+LESS+="-S " # don't chop long lines
+LESS+="--RAW-CONTROL-CHARS"
+export LESS
+
+# better `ls` (and other programs like `tree`) colors
+eval "$(dircolors)"
+
+
+# Extra programs
+# --------------
+
+# tldr
+[ -f /usr/bin/tldr ] && export TLDR_CONFIG_DIR="$XDG_CONFIG_HOME"
+
+# gpg
+#export GPG_TTY=$(tty)
+
+# nvm
+#source /usr/share/nvm/init-nvm.sh
+
+# Pandoc: Bash completition for pandoc
+if [ -f /usr/bin/pandoc ]; then
+ eval "$(pandoc --bash-completion)"
+fi
+
+# Node.js
+#export NODE_PATH=~/code/nodejs/node-v16.15.1-linux-x64/lib/node_modules
+
+# Rust
+#. "$HOME/.cargo/env"
+
+# Ruby on Rails
+#https://stackoverflow.com/a/19072136/7498073
+#gempath="$HOME/.local/share/gem/ruby/3.0.0/bin"
+#export GEM_HOME="$(ruby -e 'puts Gem.user_dir')"
+#if [[ -d $gempath ]]; then
+# export PATH="$PATH:$GEM_HOME/bin"
+#fi
+
+
+# Fun
+# ================
+
+# Greeting or salute
+if [ -f /usr/games/cowsay ] || [ -f /usr/bin/cowsay ]; then
+ #cowsay -f flaming-sheep "oh no" # original
+ #cowsay $(fortune -e 30% debian-hints 20% linux 20% science \
+ #cowsay $(fortune 30% debian-hints 20% linux 20% science \
+ # 20% off/linux 10% off/black-humor)
+ cowsay $(fortune)
+ #fortune ascii-art
+else
+ echo "Welcome back $LOGNAME"
+fi