Commande source sous Linux
1. Qu'est-ce que la commande source
source est une commande shell intégrée dans les systèmes Linux/Unix, utilisée pour exécuter les commandes du fichier spécifié dans l'environnement du shell courant. Contrairement à l'exécution directe d'un script, la commande source ne crée pas de nouveau sous-shell ; elle exécute directement le contenu du fichier dans le shell courant.
Analogie pour comprendre
Vous pouvez considérer la commande source comme une opération de « copier-coller » :
- Exécution normale d'un script : comme envoyer le fichier à quelqu'un d'autre pour qu'il l'exécute (ouverture d'un nouveau terminal)
- commande source : comme coller directement le contenu du fichier dans votre terminal actuel et l'exécuter
2. Syntaxe de base de la commande source
Exemple
Ou utilisez la notation équivalente point (.) :
Exemple
Description du paramètre
- filename: Le chemin du fichier de script à exécuter (peut être un chemin relatif ou un chemin absolu)
- parameters: Facultatif, paramètres passés au script
3. Différence entre la commande source et l'exécution directe d'un script
| Élément de comparaison | commande source | Exécution directe d'un script |
|---|---|---|
| Environnement d'exécution | Environnement shell actuel | Nouvel environnement de sous-shell |
| Impact sur les variables | Modifie les variables d'environnement du shell actuel | N'affecte pas l'environnement du shell actuel |
| Relation entre processus | Ne crée pas de nouveau processus | Crée un nouveau processus |
| Impact de exit | Si le script contient exit, il quittera le shell actuel | Ne quitte que le sous-shell |
4. Cas d'utilisation typiques de la commande source
1. Chargement de la configuration des variables d'environnement
Le cas d'utilisation le plus courant est le chargement~/.bashrcou/etc/profilefichiers de configuration tels que :
Exemple
2. Activation d’un environnement virtuel
Activation d’un environnement virtuel en développement Python :
Exemple
3. Mise à jour de l’environnement shell actuel
Lorsque vous avez modifié un fichier de configuration mais que vous ne souhaitez pas vous reconnecter :
Exemple
4. Développement modulaire de scripts
Divisez un grand script en plusieurs petits fichiers et utilisez source pour les inclure :
Exemple
source utils.sh # Inclure les fonctions utilitaires
source config.sh # Inclure la configuration
5. Exemples d'utilisation pratiques
Exemple 1 : Chargement de variables d'environnement personnalisées
Créer un fichier de testmyenv.sh:
Exemple
export MY_VAR="Hello World"
alias ll='ls -alF'
Charger avec source :
Exemple
echo $MY_VAR # Sortie : Hello World
ll # Équivalent à ls -alF
Exemple 2 : Débogage de scripts
Lors du débogage d'un script, vous pouvez utiliser source pour préserver les variables définies dans le script :
Exemple
# Les variables définies dans le script peuvent maintenant être inspectées dans le shell actuel
6. Notes et problèmes courants
- Sécurité: source exécute directement le contenu du fichier dans l'environnement courant ; n'utilisez source qu'avec des fichiers de confiance
- Recherche de fichier: source utilise le PATH du shell courant pour trouver les fichiers ; il est recommandé d'utiliser un chemin complet
- Gestion des erreurs: Si le fichier sourcé contient des erreurs, le shell courant en sera affecté
- Problèmes de récursion: Évitez de sourcer à nouveau le fichier lui-même dans un fichier sourcé, car cela peut provoquer une boucle infinie
Erreurs courantes
Exemple
source ./script.sh # Si script.sh n'est pas lisible
# Erreur : Le fichier n'existe pas
source non_exist_file.sh
7. Comparaison des alternatives
1. source vs export
exportDéfinit uniquement des variablessourcePeut exécuter des commandes arbitraires
2. source vs eval
evalExécute une chaîne plutôt qu'un fichiersourcePlus sûr, avec une source de fichier claire
Référence des commandes Linux