Я пользователь Windows с оболочкой Git Bash в качестве ежедневного драйвера.Мне любопытно, как функция __ git_ps1 обновляет приглашение каждый раз, когда вы меняете каталог.Это действительно единственный пример обновления приглашения bash на лету, который я видел.Я хочу использовать это поведение в своей собственной функции, чтобы добавить отображение в моем приглашении, если у меня открыт сеанс RDP.
tldr : Любые идеи о том, как функция __git_ps1 оценивает приглашение bash на лету ????
Итак, вот моя простая функция, чтобы увидеть, является ли клиент RDP
function __rdp_ps1() {
local MATCH=
if tasklist | grep --quiet mstsc; then
MATCH="\e[41mRDP\e[0m"
fi
echo "$MATCH"
}
Итак, идея в том, что я хочу отображать RDP с красным фоном, и я хочу, чтобы моя оболочка оценивала это на лету так же, как это может __git__ps1
.
То, что я исследовал (без реального успеха) до сих пор
/etc/profile.d/git-prompt.sh
Кажется, этот блок создает PS1, который использует моя оболочка
PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]' # set window title
PS1="$PS1"'\n' # new line
PS1="$PS1"'\[\033[32m\]' # change to green
PS1="$PS1"'\u@\h ' # user@host<space>
PS1="$PS1"'\[\033[35m\]' # change to purple
PS1="$PS1"'$MSYSTEM ' # show MSYSTEM
PS1="$PS1"'\[\033[33m\]' # change to brownish yellow
PS1="$PS1"'\w' # current working directory
if test -z "$WINELOADERNOEXEC"
then
GIT_EXEC_PATH="$(git --exec-path 2>/dev/null)"
COMPLETION_PATH="${GIT_EXEC_PATH%/libexec/git-core}"
COMPLETION_PATH="${COMPLETION_PATH%/lib/git-core}"
COMPLETION_PATH="$COMPLETION_PATH/share/git/completion"
if test -f "$COMPLETION_PATH/git-prompt.sh"
then
. "$COMPLETION_PATH/git-completion.bash"
. "$COMPLETION_PATH/git-prompt.sh"
PS1="$PS1"'\[\033[36m\]' # change color to cyan
# пробовал hamjamming PS1 = "$ PS1` __rdp_ps1` "здесь, это работает только при входе в систему
PS1="$PS1"'`__git_ps1`' # bash function
fi
fi
PS1="$PS1"'\[\033[0m\]' # change color
PS1="$PS1"'\n' # new line
PS1="$PS1"'$ ' # prompt: always $
Поэтому я пошел посмотреть, где находится этот файлисточник, чтобы увидеть, может ли это привести к ответу
/etc/bash.bashrc
Последняя строка содержит золото
# Fixup git-bash in non login env
shopt -q login_shell || . /etc/profile.d/git-prompt.sh`
Так что я оценил shopt login_shell
и он всегда включен, но я действительно не знаю, что это значит, потому что комментарий заставляет меня поверить, что, когда env входа в систему выключен, сценарий подсказки будет оцененТед
Есть идеи ???