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é. Après la mort du processus enfant, vous êtes de retour dans le terminal qui est laissé là où il était.
Plusieurs possibilités :
1. Lien symbolique
Mettez un lien symbolique dans votre maison vers le long chemin auquel vous voulez accéder facilement.
$ ln -s /home/alex/Documents/A/B/C ~/pathABC
puis accéder au répertoire avec :
$ cd ~/pathABC
2. Alias
Mettez un alias dans votre ~/.bashrc :
alias pathABC="cd /home/alex/Documents/A/B/C"
(de aquí )
3. Fonction
Créez une fonction qui change le répertoire, la fonction s'exécute dans le processus de votre terminal et peut alors changer son répertoire.
(de aquí )
4. Évitez de courir comme un enfant
Sourcez votre script au lieu de l'exécuter. Le sourcing (effectué par .
o source
) fait en sorte que le script soit exécuté dans le même script au lieu de s'exécuter dans son propre sous-shell.
$ . ./pathABC
(de aquí y aquí )
5. Vars cd-able
Définissez le cdable_vars
dans votre ~/.bashrc
et créer une variable d'environnement dans le répertoire :
shopt -s cdable_vars
export pathABC="/home/alex/Documents/A/B/C"
Vous pouvez alors utiliser cd pathABC
(de aquí )