# 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}
Ifparameter
is null or unset, nothing is substituted, otherwise the expansion ofword
is 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
.