Як пояснили інші, каталог змінюється в дочірньому процесі вашого сценарію, а не в термінальному процесі, з якого викликається сценарій. Після того, як дочірній процес помирає, ви знову в терміналі, який залишився там, де він був.
Кілька альтернатив:
1. Символічне посилання
Поставте символічне посилання у вашому домі на довгий шлях, до якого ви хочете легко дістатися
$ ln -s /home/alex/Documents/A/B/C ~/pathABC
потім перейдіть до каталогу за допомогою:
$ cd ~/pathABC
2. Псевдонім
Поставте псевдонім у своєму ~ / .bashrc:
alias pathABC="cd /home/alex/Documents/A/B/C"
( звідси )
3. Функція
Створіть функцію, яка змінює каталог, функція запускається в процесі вашого терміналу і може потім змінити його каталог.
( звідси )
4. Уникайте бігу як дитина
Джерело сценарію замість запуску. Sourcing (виконаний .
або source
) спричиняє виконання сценарію в одній оболонці замість запуску в його власній підпакеті.
$ . ./pathABC
( звідси і звідси )
5. cd-здатні вари
Встановіть cdable_vars
параметр у своєму ~/.bashrc
і створіть змінну середовища для каталогу:
shopt -s cdable_vars
export pathABC="/home/alex/Documents/A/B/C"
Тоді можна використовувати cd pathABC
( звідси )