web-dev-qa-db-fra.com

Exécute la commande du fichier dans le shell actuel

Je veux exécuter la commande de fichier (qui est un script) dans Shell en cours dans le terminal.

Exemple: le fichier ch_dir contient les éléments suivants:

#!/bin/bash
cd /usr

Maintenant, si j’exécute habituellement le fichier comme suit, il exécute les commandes dans shell différent:

pandya@pandya-desktop:~$ ./ch_dir
pandya@pandya-desktop:~$

Ici cd /user est exécuté dans un autre shell.

Mais je veux exécuter dans Shell actuel. Comment je fais ça?

Note: Ici cd est uniquement utilisé pour expliquer. Le but de la question est d'exécuter n'importe quel commande dans le shell actuel

8
Pandya

Utilisez la commande intégrée source (de help -m source):

source - Exécute les commandes depuis un fichier dans le shell actuel.

Exemple d'exécution mentionné dans la question:

pandya@pandya-desktop:~$ source ch_dir
pandya@pandya-desktop:/usr$ 

Ici, vous pouvez voir que cd /usr est exécuté dans le shell actuel et que le répertoire du shell actuel a donc été modifié!

J'espère que cela vous aidera à exécuter la commande depuis le fichier dans le shell actuel.

15
Pandya

Il suffit de lancer le script avec un . comme ceci:

pandya@pandya-desktop:~$ . ./ch_dir
5
mehdy