#!/usr/bin/env bash # shellcheck disable=SC2154 set -eo pipefail # Define variables export "BASHRCD_FALLBACK=exec env --ignore-environment bash --norc --noprofile" if [ -z "${BASHRCD_SYSTEM}" ]; then export "BASHRCD_HOMEDIR=${HOME:?}/.bashrc.d" else export "BASHRCD_HOMEDIR=/etc/bashrc.d" fi # cd into to home directory cd "${BASHRCD_HOMEDIR}" || ( echo ":: Can't cd into ${HOME:?}/.bashrc.d" ${BASHRCD_FALLBACK} ) # Initialize basic stuff [[ -f "init.d/path.sh" ]] && source "init.d/path.sh" [[ -f "init.d/variables.sh" ]] && source "init.d/variables.sh" [[ -f "init.d/aliases.sh" ]] && source "init.d/aliases.sh" [[ -f "init.d/functions.sh" ]] && source "init.d/functions.sh" # Create new configuration file if [ ! -f "config.sh" ]; then if [ -n "${BASHRCD_SYSTEM}" ] && [ "${UID}" != "0" ]; then echo ":: Warning: Can't create system-wide configuration file as normal user." else $(which cat) << EOF >> config.sh #!/usr/bin/env bash CONFIG_FLOW_CONTROL=0 CONFIG_AUTOSAVE_HISTORY=1 CONFIG_CUSTOM_PROMPT=1 CONFIG_EDITOR=nano CONFIG_REPLACE_PKGMGR_ORIGINAL=pacman CONFIG_REPLACE_PKGMGR_REPLACEMENT=paru EOF fi fi # Load configuration file source "config.sh" # Process configuration changes # -> Flow control [[ "${CONFIG_FLOW_CONTROl}" == "0" ]] && stty -ixon [[ "${CONFIG_FLOW_CONTROL}" == "1" ]] && stty ixon # -> Autosave history [[ "${CONFIG_AUTOSAVE_HISTORY}" == "1" ]] && export "PROMPT_COMMAND=history -a" # -> Custom prompt if [[ "${CONFIG_CUSTOM_PROMPT}" == "1" ]]; then export "PS1=\[\033[38;5;33m\][\[$(tput sgr0)\]\[\033[38;5;38m\]\u\[$(tput sgr0)\]\[\033[38;5;33m\]@\[$(tput sgr0)\]\[\033[38;5;38m\]\H\[$(tput sgr0)\]\[\033[38;5;33m\]:\[$(tput sgr0)\]\[\033[38;5;38m\]\W\[$(tput sgr0)\] \[$(tput sgr0)\]\[\033[38;5;214m\]\$?\[$(tput sgr0)\]\[\033[38;5;33m\]]\\$\[$(tput sgr0)\] " export "PS2=\[\033[38;5;196m\][incomplete]: \033[0;10m" export "PS4=\${0}:\${LINENO}+ " fi # -> Editor export "EDITOR=${CONFIG_EDITOR}" # -> Package manager replacement if [ -n "${CONFIG_REPLACE_PKGMGR_ORIGINAL}" ] && [ -n "${CONFIG_REPLACE_PKGMGR_REPLACEMENT}" ]; then # shellcheck disable=SC2139 alias "${CONFIG_REPLACE_PKGMGR_ORIGINAL}=${CONFIG_REPLACE_PKGMGR_REPLACEMENT}" fi # Initialize shell programs for file in programs.d/*; do # shellcheck disable=SC1090 source "${file}" done # Run startup scripts for file in startup.d/*; do # shellcheck disable=SC1090 source "${file}" done set +eo pipefail