From e55863c5c1fc4515bd99e9cd4fb415788000a8b1 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Mon, 22 Aug 2022 10:44:24 -0700 Subject: [PATCH] Use history in bash shell integration for unresolved aliases Fixes #156385 --- .../browser/media/shellIntegration-bash.sh | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/terminal/browser/media/shellIntegration-bash.sh b/src/vs/workbench/contrib/terminal/browser/media/shellIntegration-bash.sh index 2f47d677f6f77..f951cd2339280 100755 --- a/src/vs/workbench/contrib/terminal/browser/media/shellIntegration-bash.sh +++ b/src/vs/workbench/contrib/terminal/browser/media/shellIntegration-bash.sh @@ -42,6 +42,14 @@ if [[ "$(uname -s)" =~ ^CYGWIN*|MINGW*|MSYS* ]]; then builtin printf "\x1b]633;P;IsWindows=True\x07" fi +# Allow verifying $BASH_COMMAND doesn't have aliases resolved via history when the right HISTCONTROL +# configuration is used +if [[ "$HISTCONTROL" =~ .*(erasedups|ignoreboth|ignoredups).* ]]; then + __vsc_history_verify=0 +else + __vsc_history_verify=1 +fi + __vsc_initialized=0 __vsc_original_PS1="$PS1" __vsc_original_PS2="$PS2" @@ -111,7 +119,13 @@ __vsc_precmd() { __vsc_preexec() { __vsc_initialized=1 if [[ ! "$BASH_COMMAND" =~ ^__vsc_prompt* ]]; then - __vsc_current_command=$BASH_COMMAND + # Use history if it's available to verify the command as BASH_COMMAND comes in with aliases + # resolved + if [ "$__vsc_history_verify" = "1" ]; then + __vsc_current_command="$(builtin history 1 | sed -r 's/ *[0-9]+ +//')" + else + __vsc_current_command=$BASH_COMMAND + fi else __vsc_current_command="" fi