From 85679ad72e61e4fc6c25079c3d17dda7e9a097d2 Mon Sep 17 00:00:00 2001 From: "Andrew R. M" Date: Fri, 4 Apr 2025 17:43:05 +0000 Subject: [PATCH] Improve Xtrace by hiding output of prompt commands --- bash/.bashrc | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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