Tout d'abord, jetons un coup d'œil à un programme test.sh
#!/bin/sh #this is a test. cd /tmp echo "hello,this is a test"
Comment exécuter le programme :
1. Le fichier dispose des autorisations exécutables, exécutez le fichier directement.
La commande chmod permet de modifier les autorisations des fichiers.
+x rend le fichier exécutable. Tout comme nous avons exécuté le programme ci-dessus.
(Tutoriel recommandé : tutoriel Linux )
2. Appelez directement l'interpréteur de commandes pour exécuter le programme.
Puisque notre interpréteur est /bin/sh, nous utilisons l'interpréteur de commandes sh pour exécuter le programme.
3. Utilisez source pour exécuter le fichier.
Explication des différences d'exécution du programme :
Parmi les trois méthodes que nous utilisons pour exécuter des programmes shell, les processus d'exécution des deux premières méthodes sont les suivants :
(1) Le processus parent a reçu la commande et a constaté qu'il ne s'agissait pas d'une commande intégrée, il a donc créé un processus shell comme le sien pour exécuter la commande externe
(2) Ce processus enfant du shell utilise /bin /sh se remplace et le processus sh définit ses propres variables d'environnement d'exécution, y compris la variable $PWD.
(3) Le processus sh exécute les commandes intégrées cd et echo en séquence. Au cours de ce processus, les variables d'environnement du processus sh (processus enfant) sont modifiées par la commande cd.
(4) Une fois le processus enfant exécuté, il meurt. Le processus parent qui attendait se réveille et continue d'accepter les commandes.
Nous comprenons donc la raison pour laquelle les résultats d'exécution des deux premières méthodes sont différents de nos attentes. Le répertoire courant (variable d'environnement) du processus parent ne peut pas être modifié par le processus enfant.
Cependant, lors de l'utilisation de source pour exécuter un script shell, le processus enfant ne sera pas créé, mais sera exécuté directement dans le processus parent.
Tutoriels vidéo associés recommandés : Tutoriel vidéo Linux
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!