web-dev-qa-db-fra.com

Exécuter le script bash chaque fois que des lignes de commande sont exécutées

Je suis un nouvel utilisateur Ubuntu/Linux, je voudrais poser une question comme ci-dessus.

Par exemple, j'ai un fichier bash ./script, je voudrais le faire fonctionner automatiquement lorsque je tape une ligne de commande. Une fois que j'exécute la ligne de commande pwd, le ./script sera exécuté. Une fois que je tape la ligne de commande suivante ls -la, le ./script sera à nouveau exécuté.

9
Ender Phan

Vous devez définir la variable Prompt_COMMAND. De man bash:

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

Par exemple, ceci écrira la date actuelle dans /tmp/PC chaque fois qu'une commande est exécutée:

 $ Prompt_COMMAND="date > /tmp/PC"
13

Vous recherchez la variable d’environnement Prompt_COMMAND, la valeur de cette variable sera exécutée en tant que commande, après chaque commande donnée dans le terminal, juste avant d’afficher le message suivant.

Par exemple, définissez-le comme suit:

export Prompt_COMMAND='/path/to/script'

Faites le script, /path/to/script, d'abord exécutable.

Maintenant, le script sera exécuté après chaque commande.

Notez simplement que si vous ne voulez pas que la variable soit exportée, c’est-à-dire en faire une variable Shell au lieu d’un environnement, supprimez 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.
11
heemayl