Сценарий действительно работает в подоболочке, где текущий каталог изменен. Эта среда уничтожается при завершении сценария. Открытие интерактивной оболочки (исполнитель жс
) необходим для взаимодействия с измененной средой, которая открывает еще одну подоболочку, а не ту, в которой выполняется ваш скрипт.
Используя функция оболочки может быть наиболее подходящим для того, что вы хотите сделать.
изменился () {
компакт-диск "1 доллар"
эхо "Проект: $1"
}
Включите такую функцию в свой ~/.zshrc
файл (.bashrc
для пользователей bash). Когда вы выходите, а затем снова открываете терминал, команда изменился
будет доступно.
В качестве альтернативы вы должны источник вашего скрипта а не выполнять его. Также это можно было бы реализовать довольно элегантно, определив псевдоним:
alias changeir='source <путь к вашему скрипту>'
Кроме того, определение псевдонима должно быть включено в ~/.zshrc
(или же ~/.bashrc
) быть настойчивым. Как и в предыдущем подходе, команда изменился
становится доступным автозаполнение с Вкладка.
Для более общего случая использования, когда вы просто хотите легко переключиться на некоторые каталоги глубоко в дереве, см. различные дополнительные параметры. здесь.