summaryrefslogtreecommitdiffstats
path: root/bash/bashrc
diff options
context:
space:
mode:
Diffstat (limited to 'bash/bashrc')
-rw-r--r--bash/bashrc131
1 files changed, 55 insertions, 76 deletions
diff --git a/bash/bashrc b/bash/bashrc
index 2c43535..03e1d31 100644
--- a/bash/bashrc
+++ b/bash/bashrc
@@ -1,18 +1,15 @@
-# ~/.bashrc: executed by bash(1) for non-login shells. (That's why ~/.profile
-# is needed. To source it from login shells? What does login shell mean
-# anyway).
-
+#
+# ~/.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
-# Basic
-# ======================================================================
-
# If not running interactively, don't do anything
-case $- in
- *i*) ;;
- *) return;;
-esac
+[[ $- != *i* ]] && return
+
+
+# Bash configuration
+# ==================
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
@@ -26,7 +23,7 @@ HISTSIZE=1000
HISTFILESIZE=2000
# check the window size after each command and, if necessary,
-# update the values of LINES and COLUMNS.
+# 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
@@ -37,58 +34,44 @@ shopt -s checkwinsize
#[ -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'
+#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
-# 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). Requires `bash-completion package
-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
- fi
-fi
+# Don't forget to install bash-completion
-# set PATH so it includes user's private bin if it exists
-if [ -d "$HOME/.local/bin" ] ; then
- PATH="$HOME/.local/bin:$PATH"
-fi
+# Prompt
+# ------
-# Custom 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\$ '
-# If error `-bash: __git_ps1: command not found`, uncomment the following line
+
+# - user@host pwd (git prompt)
# Ref.: https://stackoverflow.com/a/15398153/7498073
-source ~/.git-prompt.sh
-# user@host pwd (git prompt)
+source ~/mahcode/dotfiles/git/git-prompt.sh
PS1='\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ '
-# Extra
-# ======================================================================
-
-# My binaries
-if [ -d "$HOME/mahcode/bin" ]; then
- PATH="$HOME/mahcode/bin:$PATH"
-fi
+# Environment
+# ===========
-# Default editor. Affects a lot of programs.
-export EDITOR=vim
+export EDITOR=nvim
+export PATH="$HOME/.local/bin:$PATH"
+export PATH="$HOME/mahcode/bin:$PATH"
-# redundant but useful
# 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_DATA_DIRS="/usr/local/share:/usr/share"
-#export XDG_CONFIG_DIRS="/etc/xdg"
+export XDG_STATE_HOME="$HOME/.local/state"
+
+export LC_COLLATE=C
# less
LESS="-i " # ignore case
@@ -96,46 +79,26 @@ LESS+="-S " # don't chop long lines
LESS+="--RAW-CONTROL-CHARS"
export LESS
+# Extra programs
+# --------------
+
# tldr
-export TLDR_CONFIG_DIR="$XDG_CONFIG_HOME"
+[ -f /usr/bin/tldr ] && export TLDR_CONFIG_DIR="$XDG_CONFIG_HOME"
# gpg
-export GPG_TTY=$(tty)
+#export GPG_TTY=$(tty)
# tmux
-export TERM="xterm-256color"
-
-# EGA/VGA font (used with ArchLinux in pre-Xorg session)
-#if [ -z $DESKTOP_SESSION ]; then
-# setfont LatGrkCyr-8x16
-#fi
+#export TERM="xterm-256color"
# nvm
-source /usr/share/nvm/init-nvm.sh
-
-
-
-# Optional
-# ======================================================================
+#source /usr/share/nvm/init-nvm.sh
-# Bash completition for pandoc
+# Pandoc: Bash completition for pandoc
if [ -f /usr/bin/pandoc ]; then
eval "$(pandoc --bash-completion)"
fi
-# Greeting or salute
-if [ -f /usr/games/cowsay ] || [ -f /usr/bin/cowsay ]; then
- # TODO: randomly select one of the following greeting commands
- #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
-
# Homebrew (linuxbrew)
if [ -f /usr/bin/brew ]; then
# for elf executables
@@ -147,15 +110,31 @@ if [ -f /usr/bin/brew ]; then
fi
# Node.js
-export NODE_PATH=~/code/nodejs/node-v16.15.1-linux-x64/lib/node_modules
+#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"
+#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