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_varsoption dans votre ~/.bashrcet 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 )