У меня есть скрипт оболочки, который меняет каталог, а затем запускается. Я хочу, чтобы изменение каталога было передано в командную строку после завершения скрипта.
Итак, я запускаю его с помощью:
. script
Однако теперь, когда скрипт завершается, все окно завершается. Есть ли способ это исправить?
Моя оболочка — bash.
решение1
Есть два способа исправить это на Mac
A> Перейдите в настройки терминала, выберите [Общие] и снимите флажок «Закрыть окно, если оболочка завершается корректно».
B> Укажите в вашем любимом текстовом редакторе ~/Library/Preferences/com.apple.Terminal.plist
Найдите строки:
< ключ>ShellExitAction< / ключ> < целое число>1 < / целое число>
измените 1 на 2 и перезапустите приложение терминала.
B по сути то же самое, что и A, но выполняется вручную.
решение2
Содержит script
оператор exit
? Помните, что точка (sourcing) запускает ваш код в текущей оболочке. Поэтому, если она содержит exit
, ваша текущая оболочка завершает работу. Вы можете проверить script и изменить any exit
на return
.
Вы можете обнаружить, что вас запрашивают (где вам это нужно return
) и запускают (где вам это нужно exit
)
[[ $BASH_SOURCE != $0 ]] && echo 'running sourced ...'