Como posso personalizar o $ PROMPT_COMMAND sem sobrescrever o padrão (se presente)?

1

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.

    
por JBallin 31.08.2018 / 20:27

2 respostas

1
# 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'
    
por 31.08.2018 / 20:27
2

Eu uso expansão de parâmetro com :+ para isso:

${parameter:+word}
If parameter is null or unset, nothing is substituted, otherwise the expansion of word 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 .

    
por 31.08.2018 / 20:51