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 digitar qualquer linha de comando. Depois de executar a linha de comando pwd
, o comando ./script
será executado. Depois de digitar a próxima linha de comando ls -la
, o comando ./script
será executado novamente.
command-line
bash
scripts
execute-command
Ender Phan
fonte
fonte
Respostas:
Você precisa definir a
PROMPT_COMMAND
variável. Deman bash
:Por exemplo, isso escreverá a data atual
/tmp/PC
toda vez que um comando for executado:fonte
echo $(date)
será executado no momento da declaração; portanto, sempre será exibido (salvo) ao mesmo tempo.Você está procurando
PROMPT_COMMAND
uma variável de ambiente, o valor dessa variável será executado como comando, após a execução de cada comando fornecido no terminal, pouco antes de mostrar o próximo prompt.Por exemplo, defina-o como:
Torne o script
/path/to/script
, executável primeiro.Agora o script será executado após cada comando.
Apenas para observar, se você não deseja que a variável seja exportada, ou seja, torne-a uma variável de shell em vez de uma de ambiente, solte
export
:De
man bash
:fonte
export
?export
tornará a variávelPROMPT_COMMAND
uma variável de ambiente, ou seja, a variável estará disponível para todos os processos filhos (por exemplo, subshells) do shell atual. Se você deseja limitá-lo apenas à sessão atual do shell (variável do shell), removaexport
.export
não é uma boa prática aqui -PROMPT_COMMAND
só deve ser definido em um arquivo de inicialização shell interativo e não deve ser visível no ambiente