оболочка osx завершает работу после использования

оболочка osx завершает работу после использования

У меня есть скрипт оболочки, который меняет каталог, а затем запускается. Я хочу, чтобы изменение каталога было передано в командную строку после завершения скрипта.

Итак, я запускаю его с помощью:

. 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 ...'

Связанный контент