Lorsque vous vous connectez à un shell Linux, vous héritez d'un environnement de travail spécifique. Un environnement , dans le contexte d'un shell, signifie que certaines variables sont déjà définies pour vous, ce qui garantit que vos commandes fonctionnent comme prévu. Par exemple, la variable d'environnement PATH définit où votre shell recherche les commandes. Sans cela, presque tout ce que vous essayez de faire dans Bash échouerait avec une commande introuvable Erreur. Votre environnement, bien qu'essentiellement invisible pour vous lorsque vous effectuez vos tâches quotidiennes, est d'une importance vitale.
Il existe de nombreuses façons d'affecter votre environnement shell. Vous pouvez apporter des modifications dans les fichiers de configuration, tels que ~/.bashrc
et ~/.profile
, vous pouvez exécuter des services au démarrage et vous pouvez créer vos propres commandes personnalisées ou créer des scripts pour vos propres fonctions Bash.
Ajouter à votre environnement avec la source
Bash (avec quelques autres shells) a une commande intégrée appelée source
. Et voici où cela peut prêter à confusion :source
remplit la même fonction que la commande .
(oui, ce n'est qu'un seul point), et ce n'est pas la même source
comme Tcl
commande (qui peut apparaître sur votre écran si vous tapez man source
). Le source
intégré la commande n'est pas dans votre PATH
du tout, en fait. C'est une commande qui fait partie de Bash, et pour obtenir plus d'informations à ce sujet, vous pouvez taper help source
.
Le .
La commande est compatible POSIX. Le source
La commande n'est pas définie par POSIX mais est interchangeable avec le .
commande.
En savoir plus sur Bash
- Aide-mémoire de Bash
- Une introduction à la programmation avec Bash
- Guide de l'administrateur système sur les scripts Bash
- Derniers articles sur Bash
Selon Bash help
, le source
La commande exécute un fichier dans votre shell actuel. La clause "dans votre shell actuel" est significative, car cela signifie qu'il ne lance pas de sous-shell ; donc, tout ce que vous exécutez avec source
se produit à l'intérieur et affecte votre courant environnement.
Avant d'explorer comment source
peut affecter votre environnement, essayez source
sur un fichier de test pour s'assurer qu'il exécute le code comme prévu. Tout d'abord, créez un script Bash simple et enregistrez-le dans un fichier appelé hello.sh
:
#!/usr/bin/env bash
echo "hello world"
Utiliser source
, vous pouvez exécuter ce script même sans définir le bit exécutable :
$ source bonjour.sh
bonjour le monde
Vous pouvez également utiliser le .
intégré commande pour les mêmes résultats :
$ . hello.sh
bonjour le monde
Le source
et .
les commandes exécutent avec succès le contenu du fichier de test.
Définir des variables et des fonctions d'importation
Vous pouvez utiliser source
pour "importer" un fichier dans votre environnement shell, tout comme vous pourriez utiliser le include
mot-clé en C ou C++ pour référencer une bibliothèque ou le import
mot-clé en Python pour apporter un module. C'est l'une des utilisations les plus courantes de source
, et c'est une inclusion par défaut courante dans .bashrc
fichiers vers source
un fichier appelé .bash_aliases
afin que tous les alias personnalisés que vous définissez soient importés dans votre environnement lorsque vous vous connectez.
Voici un exemple d'importation d'une fonction Bash. Tout d'abord, créez une fonction dans un fichier appelé myfunctions
. Cela imprime votre adresse IP publique et votre adresse IP locale :
fonction myip() {
curl http://icanhazip.com
adresse IP | grep inet$IP | \
coupe -d"/" -f 1 | \
grep -v 127\.0 | \
grep -v \:\:1 | \
awk '{$1=$1};1'
}
Importez la fonction dans votre shell :
$ source myfunctions
Testez votre nouvelle fonction :
$ myip
93.184.216.34
inet 192.168.0.23
inet6 fbd4:e85f:49c:2121:ce12:ef79:0e77:59d1
inet 10.8.42.38Rechercher la source
Lorsque vous utilisez
source
dans Bash, il recherche dans votre répertoire actuel le fichier que vous référencez. Cela ne se produit pas dans tous les shells, alors consultez votre documentation si vous n'utilisez pas Bash.Si Bash ne trouve pas le fichier à exécuter, il recherche votre
PATH
Au lieu. Encore une fois, ce n'est pas la valeur par défaut pour tous les shells, alors vérifiez votre documentation si vous n'utilisez pas Bash.Ce sont deux fonctionnalités pratiques intéressantes dans Bash. Ce comportement est étonnamment puissant car il vous permet de stocker des fonctions communes dans un emplacement centralisé sur votre disque, puis de traiter votre environnement comme un environnement de développement intégré (IDE). Vous n'avez pas à vous soucier de l'endroit où vos fonctions sont stockées, car vous savez qu'elles se trouvent dans votre équivalent local de
/usr/include
, donc peu importe où vous vous trouvez lorsque vous les recherchez, Bash les trouve.Par exemple, vous pouvez créer un répertoire appelé
~/.local/include
comme zone de stockage pour les fonctions courantes, puis placez ce bloc de code dans votre.bashrc
fichier :for i in $HOME/.local/include/* ;
do source $i
doneCela "importe" tout fichier contenant des fonctions personnalisées dans
~/.local/include
dans votre environnement shell.Bash est le seul shell qui recherche à la fois le répertoire courant et votre
PATH
lorsque vous utilisez soit lesource
ou le.
commande.Utiliser la source pour l'open source
Utiliser
source
ou.
exécuter des fichiers peut être un moyen pratique d'affecter votre environnement tout en conservant la modularité de vos modifications. La prochaine fois que vous songez à copier et coller de gros blocs de code dans votre.bashrc
, envisagez de placer des fonctions ou des groupes d'alias associés dans des fichiers dédiés, puis utilisezsource
pour les ingérer.