# Bash Tips - [Bash Tips](#bash-tips) - [bashrc](#bashrc) - [Eternal History](#eternal-history) - [Global bashrc](#global-bashrc) - [User Environment](#user-environment) - [User Aliases](#user-aliases) - [Check if executable exists](#check-if-executable-exists) - [Check if file exists](#check-if-file-exists) - [Check if last command exit code was zero](#check-if-last-command-exit-code-was-zero) ## bashrc ### Eternal History ```bash # Eternal bash history. # --------------------- # Undocumented feature which sets the size to "unlimited". # http://stackoverflow.com/questions/9457233/unlimited-bash-history export HISTFILESIZE=-1 export HISTSIZE=-1 export HISTTIMEFORMAT="[%F %T] " # Change the file location because certain bash sessions truncate .bash_history file upon close. # http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login export HISTFILE=~/.bash_eternal_history # Force prompt to write history after every command. # http://superuser.com/questions/20900/bash-history-loss PROMPT_COMMAND="history -a; $PROMPT_COMMAND" ``` ### Global bashrc ```bash # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi ``` ### User Environment ```bash # User specific environment if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]; then PATH="$HOME/.local/bin:$HOME/bin:$PATH" fi export PATH ``` ### User Aliases Allows custom aliases in ~/.bashrc.d ```bash # User specific aliases and functions if [ -d ~/.bashrc.d ]; then for rc in ~/.bashrc.d/*; do if [ -f "$rc" ]; then . "$rc" fi done fi unset rc ``` ## Check if executable exists ```bash if command -v aws 2>&1 >/dev/null then echo "aws command found" else echo "aws could not be found" fi ``` ## Check if file exists ```bash FILE=/etc/resolv.conf if [ -f "$FILE" ]; then echo "$FILE exists." else echo "$FILE does not exist." fi ``` ## Check if last command exit code was zero ```bash cat /i/do/not/exit if [ $? -eq 0 ] then echo "Success." else echo "Failure." >&2 fi ```