# If PC contains anything, add semicolon and space
if [ ! -z "$PROMPT_COMMAND" ]; then
PROMPT_COMMAND="$PROMPT_COMMAND; "
fi
# Add custom PC
PROMPT_COMMAND=$PROMPT_COMMAND'CUSTOM_PC_HERE'
O Terminal do Mac vem com um PROMPT_COMMAND padrão que verifica o histórico e atualiza o diretório de trabalho atual (título da guia):
Adicione echo $PROMPT_COMMAND ao topo do seu .bash_profile e você verá:
shell_session_history_check; update_terminal_cwd
Eu quero adicionar meu próprio PROMPT_COMMAND sem sobrescrever o padrão. O padrão deve vir antes do meu PROMPT_COMMAND personalizado com um ponto-e-vírgula e espaço para separar os dois.
Note que alguns programas (como o IntelliJ e o VS Code) não possuem um padrão! Então, eu não gostaria de incluir o espaço / ponto-e-vírgula nesse caso.
Eu uso expansão de parâmetro com :+ para isso:
${parameter:+word}
Ifparameteris null or unset, nothing is substituted, otherwise the expansion ofwordis substituted.
Um exemplo:
$ unset var
$ var=${var:+"$var; "}XXX
$ echo "$var"
XXX
$ var=abc
$ var=${var:+"$var; "}XXX
$ echo "$var"
abc; XXX
Então, para manter o comando existente com ; anexado, eu uso
PROMPT_COMMAND=${PROMPT_COMMAND:+"$PROMPT_COMMAND; "}'mycommand'
Se PROMPT_COMMAND estiver vazio antes, ele conterá apenas mycommand depois e, se não estiver, ; será inserido entre o comando existente e mycommand .