1

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

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

. script

Однако теперь, когда сценарий завершается, завершается все окно. Есть ли способ это исправить?

Моя оболочка bash.

2 ответа2

5

Есть ли в script оператор exit ? Помните, что точка (sourcing) запускает ваш код в текущей оболочке. Так что, если у него есть exit , ваша текущая оболочка завершается. Вы можете проверить сценарий и изменить любой exit для return .

Вы можете быть в состоянии обнаружить, что источник (где вы хотите сделать return) и запуск (где вы можете exit)

[[ $BASH_SOURCE != $0 ]] && echo 'running sourced ...'
0

Есть два способа исправить это в Mac

A> Перейдите в "Настройки" для "Терминала", выберите "Общие" и снимите флажок «Закрыть окно, если оболочка завершается корректно».

B> Направьте ваш любимый текстовый редактор на ~/Library/Preferences/com.apple.Terminal.plist

Найдите строки:

 < key>ShellExitAction< /key>
< integer>1< /integer>

измените 1 на 2 и перезапустите приложение терминала.

В основном то же самое, что и А, но сделано вручную.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .