Проблема в том, что вы не можете изменить рабочий каталог родительского процесса.
В связи с вашей проблемой процедура выглядит следующим образом:
Текущий рабочий каталог вашей интерактивной оболочки - $PWD
. Затем вы запускаете gotomusic
и ваша интерактивная оболочка (я назову ее parentbash
) запускает новый экземпляр bash
(я называю это childbash
) как новый процесс. childbash
наследует несколько атрибутов parentbash
. Среди прочего он наследует свой рабочий каталог от parentbash
.
Поскольку вы инструктируете childbash
читать команды из вашего скрипта, он меняет свой рабочий каталог на /media/sda8/Music
и завершает работу.
В этот момент parentbash
снова становится активным с тем же состоянием, что и до выполнения childbash
.
Для того, чтобы parentbash
свою встроенную команду cd
вы должны создать свой скрипт. Это легко сделать
source gotomusic
Но остается вопрос, подходит ли этот подход для быстрой смены каталога.
Существует несколько реализаций системных bashmarks
каталогов-закладок, но я думаю, что лучшим решением было бы то, что вы можете легко выбрать из списка наиболее часто используемых каталогов. Я не знаю, существует ли что-то подобное для bash
но если вы хотите использовать zsh
вы можете получить его в [ 1 ].