#! bash # Useful bash functions. This is sourced by the environment file. # These are available to scripts, but you shouldn't use them in scripts if you # want them to be portable. # Usage: pathremove /path/to/bin [PATH] # Eg, to remove ~/bin from $PATH # pathremove ~/bin PATH pathremove() { local IFS=':' local NEWPATH local DIR local PATHVARIABLE=${2:-PATH} for DIR in ${!PATHVARIABLE} ; do if [ "${DIR}" != "${1}" ] ; then NEWPATH="${NEWPATH:+${NEWPATH}:}${DIR}" fi done export ${PATHVARIABLE}="${NEWPATH}" } # Usage: pathprepend /path/to/bin [PATH] # Eg, to prepend ~/bin to $PATH # pathprepend ~/bin PATH pathprepend() { pathremove "${1}" "${2}" [ -d "${1}" ] || return local PATHVARIABLE="${2:-PATH}" export ${PATHVARIABLE}="${1}${!PATHVARIABLE:+:${!PATHVARIABLE}}" } # Usage: pathappend /path/to/bin [PATH] # Eg, to append ~/bin to $PATH # pathappend ~/bin PATH pathappend() { pathremove "${1}" "${2}" [ -d "${1}" ] || return local PATHVARIABLE=${2:-PATH} export $PATHVARIABLE="${!PATHVARIABLE:+${!PATHVARIABLE}:}${1}" } # Usage: ssource /path/to/shellscript # Checks if the file exists before sourcing it ssource() { [ -r "${1}" ] && source "${1}" } # Sets colours to be appropriate for a light on dark terminal darkterm() { DARK=1 source "${HOME}/.bash/colors" } # Sets the colours to be appropriate for a dark on light terminal lightterm() { DARK=0 source "${HOME}/.bash/colors" } # Usage: mcd somedir # Creates the directory if it doesn't exist, and changes into it mcd() { mkdir -p "${1}" && cd "${1}" } # Load local functions ssource "${HOME}/.bash/functions_local"