Comme d'autres l'ont expliqué, le répertoire est modifié dans le processus enfant de votre script et non dans le processus terminal à partir duquel le script est appelé. Une fois que le processus enfant est mort, vous êtes de retour dans le terminal qui est laissé où il était.
Plusieurs alternatives:
1. Lien symbolique
Mettez un lien symbolique dans votre maison vers le long chemin auquel vous souhaitez accéder facilement
$ ln -s /home/alex/Documents/A/B/C ~/pathABC
puis accédez au répertoire avec:
$ cd ~/pathABC
2. alias
Mettez un alias dans votre ~ / .bashrc:
alias pathABC="cd /home/alex/Documents/A/B/C"
(à partir d' ici )
3. fonction
Créez une fonction qui modifie le répertoire, la fonction s'exécute dans le processus de votre terminal et peut ensuite changer de répertoire.
(à partir d' ici )
4. Évitez de courir comme un enfant
Source votre script au lieu de l'exécuter. La détermination de source (effectuée par .
ou source
) entraîne l'exécution du script dans le même shell au lieu de s'exécuter dans son propre sous-shell.
$ . ./pathABC
(d' ici et d' ici )
5. cd -able vars
Définissez l' cdable_vars
option dans votre ~/.bashrc
et créez une variable d'environnement dans le répertoire:
shopt -s cdable_vars
export pathABC="/home/alex/Documents/A/B/C"
Ensuite, vous pouvez utiliser cd pathABC
(à partir d' ici )