Хитрость в том, чтобы получить право цитирования, состоит в том, чтобы получить что-нибудь в двойных кавычках, за исключением $(__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
каждый раз, когда отображается приглашение, поэтому вы должны убедиться, что при первой замене $(...)
останется нетронутой. Итак, вы пишете либо '$(...)'
, либо "\$(...)"
. Вот две основные идеи, которые лежат в основе предложенных мной решений.