#+TITLE: Bash Config #+PROPERTY: header-args+ :mkdir p yes #+PROPERTY: header-args+ :tangle ~/.bashrc Export =SHELL= to child processes. Programs such as ~screen~ honor it and otherwise use ~/bin/bash~ #+begin_src bash export SHELL #+end_src We are being invoked from a non-interactive shell. If this is an SSH session (as in =ssh host command=), source ~/etc/profile~ so we get =PATH= and other essential variables. #+begin_src bash if [[ $- != *i* ]] then [[ -n "$SSH_CLIENT" ]] && source /etc/profile return fi #+end_src Make sure we have the system-wide config. #+begin_src bash source /etc/bashrc #+end_src Adjust the prompt depending on wheather we're in a [[https://guix.gnu.org/manual/en/html_node/Invoking-guix-environment.html][guix environment]]. #+begin_src bash if [ -n "$GUIX_ENVIRONMENT" ] then PS1='\u@\h \w [env]\$ ' else PS1='\u@\h \w\$ ' fi #+end_src * History By default, Bash write its history at the end of each session, overwriting the existing file with an updated version. This means if multiple bash session are open, only the last one to exit will have its history saved. #+begin_src bash shopt -s histappend #+end_src Most of the time the following commands just clutter up history or obscures usefull entries. Ignore the following commands #+begin_src bash export HISTIGNORE='exit:ls:ll:cd:pwd:bg:fg:history' #+end_src * Aliases #+begin_src bash alias ls='ls -p --color=auto' alias ll='ls -l' alias grep='grep --color=auto' #+end_src * Variables #+begin_src bash export BROWSER=vimb #+end_src Guix #+begin_src bash export GUIX_PROFILE="$HOME/.guix-profile" export GUIX_PACKAGE_PATH="$HOME/Source/bbbsd" export GUILE_LOAD_PATH="$HOME/.guix-profile/share/guile/site/2.2${GUILE_LOAD_PATH:+:}${GUILE_LOAD_PATH}" export GUILE_LOAD_COMPILED_PATH="$HOME/.guix-profile/share/guile/site/2.2/site-ccache${GUILE_LOAD_COMPILED_PATH:+:}${GUILE_LOAD_COMPILED_PATH}" export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale" #+end_src