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 fichiersxtrace: Affiche les commandes et leurs arguments au fur et à mesure de leur exécutionnounset: 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 :
-xest équivalent à-o xtrace-uest équivalent à-o nounset-eest é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 :
- Ouvrez le fichier
~/.zshrcavec un éditeur de texte :
nano ~/.zshrc
- 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
- Enregistrez le fichier en appuyant sur
Ctrl+O, puis surEntrée, et quittez nano avecCtrl+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 :
- Ouvrez à nouveau le fichier de configuration :
nano ~/.zshrc
- 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'
Enregistrez et quittez nano comme précédemment.
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 :
- Afficher les options actuelles du shell avec
set -o - Activer les options en utilisant
set -o option_nameouset -X(forme à une seule lettre) - Désactiver les options en utilisant
set +o option_nameouset +X(forme à une seule lettre) - Utiliser des options spécifiques comme
noclobberpour empêcher l'écrasement des fichiers - Activer le débogage avec l'option
xtrace - Détecter les erreurs de variable avec l'option
nounset - Rendre les options du shell persistantes en les ajoutant à votre fichier de configuration du shell
- 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é.



