diff --git a/bash/.bashrc b/bash/.bashrc index 1fb1d7a..b76abe3 100644 --- a/bash/.bashrc +++ b/bash/.bashrc @@ -130,6 +130,23 @@ if [ -f "$HOME/.private_functions" ] && [ -r "$HOME/.private_functions" ]; then . "$HOME/.private_functions" fi +# Preserve the usefulness of set -x by attempting to hide everything that +# happens in prompt_command +preserve_xtrace() { + if grep -q "x" <<< $-; then + XTRACE_WAS_SET=1 + set +x + fi +} 2>/dev/null +preserve_xtrace_reset() { + if [ "${XTRACE_WAS_SET}" ]; then + set -x + unset XTRACE_WAS_SET + fi +} 2>/dev/null + +PROMPT_COMMAND="preserve_xtrace; $PROMPT_COMMAND; preserve_xtrace_reset" + if $(which direnv &> /dev/null); then eval "$(direnv hook bash)" fi