Ответ 1
Трюк для правильного цитирования состоит в том, чтобы иметь eveything с двойным кавычком, за исключением $(__git_ps1 "(%s)")
, который имеет одинарные кавычки.
source ~/.git-completion.bash
function prompt
{
local WHITE="\[\033[1;37m\]"
local GREEN="\[\033[0;32m\]"
local CYAN="\[\033[0;36m\]"
local GRAY="\[\033[0;37m\]"
local BLUE="\[\033[0;34m\]"
export PS1="
${GREEN}\u${CYAN}@${BLUE}\h ${CYAN}\w"' $(__git_ps1 "(%s)") '"${GRAY}"
}
prompt
Альтернативным решением является замена $(
на \$(
в коде в вопросе.
Фоновая информация: происходят две замены: сначала в export PS1="..."
время, а затем, когда отображается приглашение. Вы хотите выполнить __git_ps1
каждый раз, когда отображается приглашение, поэтому вы должны убедиться, что первая подстановка сохраняет $(...)
неповрежденной. Таким образом, вы пишете либо '$(...)'
, либо "\$(...)"
. Это две основные идеи решений, которые я предложил.