Comment lister les options actuelles du Shell avec la commande set sous Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Les options du shell Linux offrent un moyen puissant de personnaliser le comportement de votre interface en ligne de commande. En comprenant et en utilisant la commande set, vous pouvez optimiser les paramètres de votre shell pour qu'ils correspondent à vos besoins spécifiques et améliorer votre productivité globale. Ce tutoriel vous guidera à travers l'exploration de la commande set, vous permettant de visualiser et de modifier diverses options du shell. Ces compétences vous aideront à adapter votre environnement Linux pour travailler plus efficacement et à prévenir les erreurs courantes lors de vos opérations en ligne de commande.

Comprendre les options du shell et la commande Set

Les options du shell sous Linux sont des paramètres qui contrôlent le comportement de votre interface en ligne de commande. Ces options peuvent rendre vos interactions avec le shell plus efficaces et aider à prévenir les erreurs lors de l'utilisation de fichiers et de commandes.

La commande set est un utilitaire de shell intégré qui vous permet de visualiser et de modifier ces options. Avant de commencer à modifier les options, apprenons d'abord comment afficher les paramètres actuels du shell.

Ouvrez votre terminal et tapez la commande set sans aucun argument :

set

Lorsque vous exécutez cette commande, vous verrez beaucoup de résultats affichant toutes les variables et fonctions du shell actuellement définies. Cette sortie comprend toutes les variables d'environnement, les fonctions du shell et les options du shell actuellement actives dans votre session.

La sortie peut sembler accablante au début. Voici une petite partie de ce que vous pourriez voir :

BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
...many more variables and functions...

Pour voir uniquement les options du shell qui sont actuellement activées, vous pouvez utiliser l'option -o avec la commande set :

set -o

Cela affichera une liste plus gérable des options du shell avec leur statut actuel (activé ou désactivé). Votre sortie ressemblera à ceci :

allexport       off
braceexpand     on
emacs           on
errexit         off
errtrace        off
functrace       off
hashall         on
histexpand      on
history         on
ignoreeof       off
interactive-comments    on
keyword         off
monitor         on
noclobber       off
noexec          off
noglob          off
nolog           off
notify          off
nounset         off
onecmd          off
physical        off
pipefail        off
posix           off
privileged      off
verbose         off
vi              off
xtrace          off

Chaque option a un objectif spécifique qui affecte le comportement du shell. Par exemple :

  • noclobber: Empêche l'écrasement accidentel de fichiers
  • xtrace: Affiche les commandes et leurs arguments au fur et à mesure de leur exécution
  • nounset: Traite les variables non définies comme des erreurs lors de la substitution

Dans l'étape suivante, nous apprendrons comment modifier ces options pour personnaliser votre expérience du shell.

Activation et désactivation des options du shell

Maintenant que vous pouvez afficher les options actuelles du shell, apprenons comment les modifier. La commande set utilise la syntaxe suivante pour activer ou désactiver les options :

  • Pour activer une option : set -o option_name
  • Pour désactiver une option : set +o option_name

Notez que le signe moins (-) active une option, tandis que le signe plus (+) la désactive.

Essayons d'activer l'option noclobber, qui vous empêche d'écraser accidentellement des fichiers existants avec l'opérateur de redirection de sortie (>):

set -o noclobber

Pour vérifier que l'option a été activée, exécutez à nouveau la commande set -o :

set -o

Dans la sortie, vous devriez maintenant voir que noclobber est défini sur on :

...
noclobber       on
...

Testons comment cette option affecte le comportement de votre shell. Tout d'abord, créez un fichier de test :

echo "This is a test file" > testfile.txt

Maintenant, essayez d'écraser ce fichier en utilisant l'opérateur de redirection :

echo "Attempt to overwrite" > testfile.txt

Au lieu d'écraser le fichier, vous devriez voir un message d'erreur similaire à :

bash: testfile.txt: cannot overwrite existing file

Cela démontre comment l'option noclobber vous protège contre l'écrasement accidentel de fichiers.

Si vous souhaitez désactiver cette protection, vous pouvez désactiver l'option noclobber :

set +o noclobber

Vérifiez que l'option a été désactivée :

set -o

Vous devriez voir que noclobber est maintenant défini sur off :

...
noclobber       off
...

Maintenant, essayez d'écraser à nouveau le fichier :

echo "Successfully overwritten" > testfile.txt

Cette fois, la commande devrait s'exécuter sans aucune erreur, et le contenu du fichier sera remplacé.

Vous pouvez vérifier le nouveau contenu en affichant le fichier :

cat testfile.txt

La sortie devrait être :

Successfully overwritten

Cet exemple simple démontre comment les options du shell peuvent modifier de manière significative le comportement de votre shell. Dans l'étape suivante, nous explorerons des options de shell plus utiles et leurs applications pratiques.

Utilisation des options du shell pour le débogage et la prévention des erreurs

Les options du shell sont particulièrement utiles pour le débogage des scripts et la prévention des erreurs courantes. Dans cette étape, nous allons explorer deux options importantes : xtrace pour le débogage et nounset pour la prévention des erreurs.

L'option xtrace pour le débogage

L'option xtrace (également connue sous le nom de mode débogage) affiche chaque commande et ses arguments développés au fur et à mesure de son exécution. Ceci est extrêmement utile lors du débogage des scripts shell.

Activons l'option xtrace :

set -o xtrace

Maintenant, lorsque vous exécutez des commandes, vous les verrez imprimées dans le terminal, précédées d'un signe plus (+) avant leur exécution. Essayons une commande simple :

echo "Hello, World!"

Votre sortie inclura à la fois la commande en cours d'exécution et son résultat :

+ echo 'Hello, World!'
Hello, World!

Essayons un exemple un peu plus complexe avec une variable :

MY_VAR="Linux"
echo "I am using $MY_VAR"

La sortie montrera comment la variable est développée :

+ MY_VAR=Linux
+ echo 'I am using Linux'
I am using Linux

Cette fonctionnalité est inestimable lorsque vous essayez de comprendre ce qui se passe dans des scripts ou des commandes complexes.

Pour désactiver l'option xtrace lorsque vous n'en avez plus besoin :

set +o xtrace

L'option nounset pour la prévention des erreurs

L'option nounset aide à prévenir les erreurs en traitant les variables non définies comme des erreurs plutôt qu'en les développant en une chaîne vide. Cela peut aider à détecter les fautes de frappe et les variables non définies.

Activons l'option nounset :

set -o nounset

Maintenant, si vous essayez d'utiliser une variable qui n'a pas été définie, le shell produira une erreur au lieu d'utiliser silencieusement une valeur vide. Testons cela :

echo "The value is: $UNDEFINED_VARIABLE"

Vous devriez voir un message d'erreur similaire à :

bash: UNDEFINED_VARIABLE: unbound variable

C'est bien mieux que de laisser votre script continuer avec une valeur vide inattendue, ce qui pourrait causer des problèmes plus tard.

Si vous souhaitez désactiver cette protection :

set +o nounset

Maintenant, essayer la même commande ne produira pas d'erreur, mais utilisera plutôt une chaîne vide :

echo "The value is: $UNDEFINED_VARIABLE"

Sortie :

The value is:

Combinaison de plusieurs options

Vous pouvez activer plusieurs options du shell à la fois. Par exemple, pour activer à la fois xtrace et nounset :

set -o xtrace -o nounset

Ou, en utilisant la notation abrégée :

set -xu

De nombreuses options du shell ont des équivalents à une seule lettre qui peuvent être utilisés avec la syntaxe - (activer) et + (désactiver). Par exemple :

  • -x est équivalent à -o xtrace
  • -u est équivalent à -o nounset
  • -e est équivalent à -o errexit

Vérifiez à nouveau l'état actuel de vos options du shell :

set -o

Expérimentez avec différentes options pour trouver le comportement du shell qui convient le mieux à vos besoins et à votre style de travail.

Rendre les options du shell persistantes

Jusqu'à présent, nous avons défini des options du shell qui n'affectent que notre session de terminal actuelle. Une fois que vous fermez le terminal ou que vous vous déconnectez, ces paramètres seront perdus. Pour rendre vos options de shell préférées persistantes d'une session à l'autre, vous pouvez les ajouter au fichier de configuration de votre shell.

Ajout d'options du shell à votre configuration du shell

Pour les utilisateurs de Bash, le fichier de configuration est généralement ~/.bashrc, tandis que pour les utilisateurs de Zsh (le paramètre par défaut dans cet environnement), il s'agit de ~/.zshrc.

Ajoutons quelques options du shell à votre fichier de configuration Zsh :

  1. Ouvrez le fichier ~/.zshrc avec un éditeur de texte :
nano ~/.zshrc
  1. Ajoutez les lignes suivantes à la fin du fichier :
## Shell options
set -o noclobber ## Prevent accidental file overwrites
## Uncomment the following lines if you want them enabled by default
## set -o xtrace    ## Enable debugging output
## set -o nounset   ## Treat unset variables as errors
  1. Enregistrez le fichier en appuyant sur Ctrl+O, puis sur Entrée, et quittez nano avec Ctrl+X.

La prochaine fois que vous démarrerez une nouvelle session de terminal, ces options seront automatiquement activées. Vous pouvez le tester en vous déconnectant et en vous reconnectant, ou en sourçant le fichier de configuration :

source ~/.zshrc

Création d'alias d'options du shell

Vous pouvez également créer des alias pour activer ou désactiver rapidement des ensembles spécifiques d'options. Ceci est utile lorsque vous avez besoin de différentes configurations d'options pour différentes tâches.

Ajoutons quelques alias utiles à votre configuration du shell :

  1. Ouvrez à nouveau le fichier de configuration :
nano ~/.zshrc
  1. Ajoutez ces alias à la fin du fichier :
## Shell option aliases
alias debug-on='set -o xtrace'
alias debug-off='set +o xtrace'
alias safe-mode='set -o noclobber -o nounset'
alias normal-mode='set +o noclobber +o nounset'
  1. Enregistrez et quittez nano comme précédemment.

  2. Appliquez ces modifications à votre session actuelle :

source ~/.zshrc

Vous pouvez maintenant facilement activer le mode débogage en tapant debug-on et le désactiver avec debug-off. De même, vous pouvez entrer en mode plus sûr avec une vérification des erreurs plus stricte en utilisant safe-mode et revenir aux paramètres normaux avec normal-mode.

Testons ces alias :

debug-on
echo "Testing debug mode"
debug-off

Vous devriez voir la sortie de débogage pour la commande echo :

+ echo 'Testing debug mode'
Testing debug mode

Et maintenant, essayez le mode sûr :

safe-mode
set -o

Vous devriez voir que noclobber et nounset sont tous deux définis sur on dans la sortie.

Revenez en mode normal :

normal-mode
set -o

Maintenant, les deux options devraient être à nouveau définies sur off.

Ces alias offrent un moyen pratique de basculer entre différentes configurations de shell en fonction de vos tâches actuelles.

Résumé

Dans ce lab, vous avez appris à travailler avec les options du shell sous Linux en utilisant la commande set. Vous savez maintenant comment :

  1. Afficher les options actuelles du shell avec set -o
  2. Activer les options en utilisant set -o option_name ou set -X (forme à une seule lettre)
  3. Désactiver les options en utilisant set +o option_name ou set +X (forme à une seule lettre)
  4. Utiliser des options spécifiques comme noclobber pour empêcher l'écrasement des fichiers
  5. Activer le débogage avec l'option xtrace
  6. Détecter les erreurs de variable avec l'option nounset
  7. Rendre les options du shell persistantes en les ajoutant à votre fichier de configuration du shell
  8. Créer des alias pour basculer rapidement entre différentes configurations d'options

Ces compétences vous aideront à personnaliser votre environnement shell pour qu'il corresponde à votre style de travail et à vos besoins. En définissant les options du shell appropriées, vous pouvez améliorer votre productivité, prévenir les erreurs courantes et rendre votre expérience en ligne de commande plus efficace.

Au fur et à mesure que vous vous familiariserez avec Linux, vous souhaiterez peut-être explorer d'autres options du shell et comment elles peuvent être combinées pour créer un environnement en ligne de commande plus puissant et personnalisé.