# ~/.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). # 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 # 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. 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 # 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 # set PATH so it includes user's private bin if it exists if [ -d "$HOME/.local/bin" ] ; then PATH="$HOME/.local/bin:$PATH" fi # Custom prompt: # - 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 # Ref.: https://stackoverflow.com/a/15398153/7498073 source ~/.git-prompt.sh # user@host pwd (git prompt) 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 # Default editor. Affects a lot of programs. export EDITOR=vim # 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" # less LESS="-i " # ignore case LESS+="-S " # don't chop long lines LESS+="--RAW-CONTROL-CHARS" export LESS # tldr export TLDR_CONFIG_DIR="$XDG_CONFIG_HOME" # gpg 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 # nvm source /usr/share/nvm/init-nvm.sh # Optional # ====================================================================== # 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 export PATH="/home/linuxbrew/.linuxbrew/bin:${PATH}" # for manpages export MANPATH="/home/linuxbrew/.linuxbrew/share/man:${MANPATH}" # for info pages export INFOPATH="/home/linuxbrew/.linuxbrew/share/info:${INFOPATH}" 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