Révision Glossaire EN

Taille

Yeux

Termine une partie dans un dojo pour débloquer les yeux suivants.

Jour 1 10 min

Comment démarre un processus

1 / 10 · ≈ 10 min restantes

Le problème

Tu lances ./setenv.sh, un script de deux lignes : cd /tmp et export DB_URL=postgres://db/app. Il affiche in script: /tmp postgres://db/app. De retour au prompt, pwd affiche toujours ton dossier personnel et echo $DB_URL sort une ligne vide.

Le script a tourné dans un deuxième processus. Bash a appelé fork() pour se copier, et la copie a appelé execve() pour charger /bin/bash sur le script. Pendant le test, le script a affiché pid=4044147 ppid=4044145 : son parent était le shell, PID 4044145.

Le cd et le export ont modifié le dossier courant et les variables du processus 4044147, et de lui seul. À la fin de ce processus, son dossier et ses variables ont disparu avec lui. . ./setenv.sh exécute les deux mêmes lignes dans le shell lui-même, et là elles restent.