Как объясняли другие, каталог изменяется в дочернем процессе вашего скрипта, а не в терминальном процессе, из которого вызывается скрипт. После того, как дочерний процесс умирает, вы возвращаетесь в терминал, который остается там, где он был.
Несколько альтернатив:
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. Избегайте бега как ребенок
Создайте исходный код своего скрипта вместо того, чтобы запускать его. Поиск поставщиков (осуществляется .
или source
) приводит к выполнению скрипта в той же оболочке, а не в его собственной подоболочке.
$ . ./pathABC
(из здесь и здесь)
5. вары, поддерживающие компакт-диски
Установите cdable_vars
вариант в вашем ~/.bashrc
и создайте переменную среды для каталога:
shopt -s cdable_varsexport pathABC="/home/alex/Documents/A/B/C"
Тогда вы можете использовать cd pathABC
(из здесь)