Como chamar um script após cada comando bash

21

É possível chamar um script neste exemplo chamado hey.sh após cada comando bash?

Por exemplo, você digita ls hit enter e ls é executado e, em seguida, hey.sh será executado.

Você então digita cd .. (ou qualquer outro comando) , cd executa então hey.sh seria executado, e assim por diante.

    
por John 14.01.2016 / 19:51

1 resposta

28
PROMPT_COMMAND+="hey.sh;"

PROMPT_COMMAND If set, the value is executed as a command prior to issuing each primary prompt.

Nota: variáveis de ambiente vs variáveis de shell

Por padrão, PROMPT_COMMAND é não uma variável de ambiente . É apenas uma variável de shell .

Ambos os tipos de variáveis são acessados da mesma maneira ( "$variable*" ), mas variáveis de ambiente são herdadas por processos filhos, enquanto variáveis de shell não são.

A convenção é capitalizar variáveis de ambiente + variáveis de shell que configuram seu shell (PROMPT_COMMAND configura seu shell), mas mantém outros tipos de variáveis em minúsculas.

Em bash , você pode fazer: declare -p para descobrir se uma variável é exportada (= é uma variável de ambiente) ou não:

$ declare -p PATH
declare -x PATH=... #-x means it's exported
$ declare PROMPT_COMMAND
declare -- PROMPT_COMMAND=... #no -x so just a shell variable
    
por 14.01.2016 / 20:05

Tags