Chaque fois que vous exécutez un script sur votre shell de connexion, un nouveau sous-processus est lancé et l'exécution du script est effectuée dans un sous-shell. Une fois le script terminé, le sous-shell se ferme et vous revenez au shell de connexion. Ainsi, chaque fois que vous exécutez un cd via un script, le répertoire est modifié selon le chemin spécifié par le cd, mais une fois le script terminé, vous revenez à votre shell de connexion dans le répertoire de travail à partir duquel vous avez lancé le script.
La manière de surmonter ceci est d'utiliser,
source votrescript.sh
Ce que source fait, c'est qu'il exécute le script en tant que script TCL, c'est-à-dire qu'il a le même effet que si vous aviez tapé chaque ligne sur la ligne de commande de votre shell de connexion et exécuté à partir de là. De cette manière, lorsque le script termine après le cd, il reste dans ce répertoire.
0 votes
Je fais quelques modifications dans le code d'exemple. En bash, cd devrait être fait via un alias ou une fonction.
0 votes
Similaire : Pourquoi ne fonctionne pas "cd" dans un script shell bash ?