30. Options

Les options sont des paramétrages modifiant le comportement du shell et/ou du script.

La commande set active les options dans un script. Là où vous voulez que les options soient effectives dans le script, utilisez set -o nom-option ou, plus court, set -abreviation-option. Ces deux formes sont équivalentes.

      #!/bin/bash

      set -o verbose
      # Affiche toutes les commandes avant exécution.
      
      #!/bin/bash

      set -v
      # Même effet que ci-dessus.
      
[Note]

Note

Pour désactiver une option dans un script, utilisez set +o nom-option ou set +abreviation-option.

      #!/bin/bash

      set -o verbose
      # Mode echo des commandes activé.
      commande
      ...
      commande

      set +o verbose
      # Mode echo des commandes désactivé.
      commande
      # Pas d'affichage.


      set -v
      # Mode echo des commandes activé.
      commande
      ...
      commande

      set +v
      # Mode echo des commandes désactivé.
      commande

      exit 0
      

Une autre méthode d'activation des options dans un script est de les spécifier tout de suite après l'en-tête #! du script.

      #!/bin/bash -x
      #
      # Le corps du script suit.
      

Il est aussi possible d'activer les options du script à partir de la ligne de commande. Certaines options qui ne fonctionneront pas avec set sont disponibles de cette façon. Parmi celles-ci se trouve -i, forçant un script à se lancer de manière interactive.

bash -v nom-script

bash -o verbose nom-script

Ce qui suit est une liste de quelques options utiles. Elles sont spécifiées soit dans leur forme abrégée (précédées par un simple tiret), soit par leur nom complet (précédées par un double tiret ou par un -o).

Tableau 30.1. Options de bash

Abréviation Nom Effet
-B développement des accolades Active le développement des accolades (activée par défaut)
+B développement des accolades Désactive le développement des accolades
-C noclobber Empêche l'écrasement de fichiers par une redirection (peut être outrepassé par >|)
-D (aucune) Affiche les chaînes entre guillemets préfixées par un $ mais n'exécute pas les commandes du script.
-a allexport Exporte toutes les variables définies
-b notify Notifie lorsque un travail en tâche de fond se termine (n'est pas d'une grande utilité dans un script)
-c ... (aucune) Lit les commandes à partir de ...
checkjobs   Informe l'utilisateur d'un éventuel job encore ouvert, au moment de la fermeture du shell. Introduit par la version 4 de Bash, encore « experimental. » Usage : shopt -s checkjobs (Attention : risque de plantage !)
-e errexit Annule un script à la première erreur lorsqu'une commande quitte avec un statut différent de zéro (sauf pour les boucles until ou while, les tests if et les constructions de listes)
-f noglob Expansion des noms de fichier désactivée
globstar globbing star-match Active l'opérateur de remplacement ** (version 4+ de Bash). Usage : shopt -s globstar
-i interactive Script lancé dans un mode interactif
-n noexec Lit les commandes du script, mais ne les exécute pas (vérification de syntaxe)
-o Nom-Option (aucune) Appelle l'option Nom-Option
-o posix POSIX Modifie le comportement de Bash, ou du script appelé, pour se conformer au standard POSIX.
-o pipefail échec d'un tube Fait qu'un tube renvoie le code de sortie de la dernière commande dans le tube qui a renvoyé un code de sortie différent de zéro.
-p privileged Script lancé avec « suid » (attention !)
-r restricted Script lancé en mode restreint (voir le Chapitre 21, Shells restreints).
-s stdin Lit les commandes à partir de l'entrée standard (stdin)
-t (aucune) Sort après la première commande
-u nounset Essayer d'utiliser une variable non définie affiche un message d'erreur et force l'arrêt du script
-v verbose Affiche chaque commande sur stdout avant de les exécuter
-x xtrace Similaire à -v, mais étend les commandes
- (aucune) Fin des options. Tous les autres arguments sont des paramètres de position.
-- (aucune) Désinitialise les paramètres de position. Si des arguments sont donnés (-- arg1 arg2), les paramètres de position sont initialisés avec ces arguments.