Executa o script bash toda vez que as linhas de comando são executadas

9

Sou um novo usuário do Ubuntu / Linux, gostaria de fazer uma pergunta como meu título acima.

Por exemplo, eu tenho um arquivo bash ./script , gostaria de executá-lo automaticamente quando eu digito qualquer linha de comando. Depois que eu executar a linha de comando pwd , o ./script será executado. Depois de digitar a próxima linha de comando ls -la , o ./script será executado novamente.

    
por Ender Phan 03.10.2016 / 13:11

2 respostas

13

Você precisa definir a variável PROMPT_COMMAND . De man bash :

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

Por exemplo, isso gravará a data atual em /tmp/PC toda vez que um comando for executado:

 $ PROMPT_COMMAND="date > /tmp/PC"
    
por Arkadiusz Drabczyk 03.10.2016 / 13:18
11

Você está procurando pela variável de ambiente PROMPT_COMMAND , o valor desta variável será executado como comando, após cada comando dado no terminal ser executado, antes de mostrar o próximo prompt.

Por exemplo, defina-o como:

export PROMPT_COMMAND='/path/to/script'

Faça o script, /path/to/script , executável primeiro.

Agora o script será executado após cada comando.

Apenas para observar, se você não quiser que a variável seja exportada, ou seja, torná-la uma variável de shell em vez de um ambiente, solte export :

PROMPT_COMMAND='/path/to/script'

De man bash :

PROMPT_COMMAND 
If set, the value is executed as a command prior to issuing each primary prompt.
    
por heemayl 03.10.2016 / 13:15