# # ~/.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 TERMINAL=st 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 # ------ # - 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 # =========== # Add directories to PATH ds=( "$HOME/code/tex-live-native/build/bin/x86_64-linux" "$HOME/.local/share/gem/ruby/3.0.0/bin" "$HOME/.local/bin" "$HOME/mahcode/dotfiles/public/.local/bin" ) for d in "${ds[@]}"; do if ! echo $PATH | grep -qE "(^|:)$d($|:)"; then export PATH="$d:$PATH" fi done 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" # This is already in .xinitrc # 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+=" -j5" # Add 5 context lines LESS+=" --RAW-CONTROL-CHARS" export LESS # better `ls` (and other programs like `tree`) colors eval "$(dircolors)" # container directory for many python venv export PYTHON_VENVS="$XDG_DATA_HOME/python/venvs" # use the simple interactive terminal, the "advanced" one does not support vim input export PYTHON_BASIC_REPL=1 # Extra programs # -------------- # tldr [ -f /usr/bin/tldr ] && export TLDR_CONFIG_DIR="$XDG_CONFIG_HOME" # 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