Come altri hanno spiegato, la directory viene modificata nel processo figlio dello script, non nel processo terminale da cui viene chiamato lo script. Dopo la morte del processo figlio, si ritorna nel terminale che è rimasto dov'era.
Diverse alternative:
1. Collegamento simbolico
Inserisci un link simbolico nella tua casa per il lungo percorso a cui desideri accedere facilmente
$ ln -s /home/alex/Documents/A/B/C ~/pathABC
quindi accedi alla directory con:
$ cd ~/pathABC
2. Alias
Inserisci un alias nel tuo ~ / .bashrc:
alias pathABC="cd /home/alex/Documents/A/B/C"
(da qui )
3. Funzione
Crea una funzione che modifica la directory, la funzione viene eseguita nel processo del tuo terminale e può quindi cambiare la sua directory.
(da qui )
4. Evitare di correre da bambino
Sorgi il tuo script invece di eseguirlo. Il sourcing (eseguito da .
o source
) fa sì che lo script venga eseguito nella stessa shell invece di essere eseguito nella propria subshell.
$ . ./pathABC
(da qui e qui )
5. Vars cd-grado
Imposta l' cdable_vars
opzione nella tua ~/.bashrc
e crea una variabile d'ambiente nella directory:
shopt -s cdable_vars
export pathABC="/home/alex/Documents/A/B/C"
Quindi puoi usare cd pathABC
(da qui )