Skip to content

Commit 7b264cb

Browse files
authored
Merge pull request microsoft#151170 from microsoft/tyriar/si_bash
Fix PS1-based bash shell integration
2 parents 5665196 + d057ff1 commit 7b264cb

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

src/vs/workbench/contrib/terminal/browser/media/shellIntegration-bash.sh

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
# ---------------------------------------------------------------------------------------------
55

66
VSCODE_SHELL_INTEGRATION=1
7+
__vsc_initialized=0
78

89
if [ -z "$VSCODE_SHELL_LOGIN" ]; then
910
. ~/.bashrc
@@ -72,6 +73,7 @@ __vsc_command_complete() {
7273
}
7374

7475
__vsc_update_prompt() {
76+
__vsc_initialized=1
7577
__vsc_prior_prompt="$PS1"
7678
__vsc_in_command_execution=""
7779
PS1="\[$(__vsc_prompt_start)\]$PREFIX$PS1\[$(__vsc_prompt_end)\]"
@@ -89,25 +91,28 @@ __vsc_precmd() {
8991
}
9092

9193
__vsc_preexec() {
92-
PS1="$__vsc_prior_prompt"
94+
if [ -z "${__vsc_initialized-}" ]; then
95+
PS1="$__vsc_prior_prompt"
96+
fi
9397
if [ -z "${__vsc_in_command_execution-}" ]; then
9498
__vsc_in_command_execution="1"
9599
__vsc_command_output_start
96100
fi
97101
}
98102

99103
# Debug trapping/preexec inspired by starship (ISC)
100-
dbg_trap="$(trap -p DEBUG | cut -d' ' -f3 | tr -d \')"
101-
if [[ -z "$dbg_trap" ]]; then
104+
__vsc_dbg_trap="$(trap -p DEBUG | cut -d' ' -f3 | tr -d \')"
105+
if [[ -z "$__vsc_dbg_trap" ]]; then
102106
__vsc_preexec_only() {
103107
__vsc_status="$?"
104108
__vsc_preexec
105109
}
106110
trap '__vsc_preexec_only "$_"' DEBUG
107-
elif [[ "$dbg_trap" != '__vsc_preexec "$_"' && "$dbg_trap" != '__vsc_preexec_all "$_"' ]]; then
111+
elif [[ "$__vsc_dbg_trap" != '__vsc_preexec "$_"' && "$__vsc_dbg_trap" != '__vsc_preexec_all "$_"' ]]; then
108112
__vsc_preexec_all() {
109113
__vsc_status="$?"
110-
local PREV_LAST_ARG=$1 ; $dbg_trap; __vsc_preexec; : "$PREV_LAST_ARG";
114+
builtin eval ${__vsc_dbg_trap}
115+
__vsc_preexec
111116
}
112117
trap '__vsc_preexec_all "$_"' DEBUG
113118
fi

0 commit comments

Comments
 (0)