Executer la commande d’un script dans le shell courant
Si vous voulez exécuter une commande (ou plusieurs) contenue d’un script, celle-ci ne s’exécute pas dans le shell courant, démonstration :
1. Voici un simple script (nome ch_dir) qui se déplace dans le répertoire /usr
1 2 3 |
#!/bin/bash cd /usr |
2. Essayons de l’exécuter depuis le shell
1 2 |
morgan@morgan-pc:~$ ./ch_dir morgan@morgan-pc:~$ |
On peux voir que je ne me suis pas déplacer dans le répertoire car un script s’exécute sur un fork du shell actuelle.
Pour pouvoir faire cela, il existe la commande source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
morgan@morgan-pc:~$ help -m source NAME source - Execute des commandes depuis un fichier dans le shell actuel. SYNOPSIS source nom_fichier [arguments] DESCRIPTION Execute des commandes depuis un fichier dans le shell actuel. Lit et exécute des commandes depuis NOMFICHIER dans le shell actuel. Les éléments dans $PATH sont utilisés pour trouver le répertoire contenant NOMFICHIER. Si des ARGUMENTS sont fournis, ils deviennent les paramètres de position lorsque NOMFICHIER est exécuté. Code de sortie : Renvoie le code de la dernière commande exécutée dans NOMFICHIER, ou le code d'échec si NOMFICHIER ne peut pas être lu. SEE ALSO bash(1) IMPLEMENTATION GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu) Copyright (C) 2013 Free Software Foundation, Inc. Licence GPLv3+ : GNU GPL version 3 ou ultérieure <http://gnu.org/licenses/gpl.html> |
Maintenant si je ré-exécute la même commande avec source, elle s’exécute bien dans le shell courant
1 2 |
morgan@morgan-pc:~$ source ch_dir morgan@morgan-pc:/usr$ |