У меня установлена последняя версия OS X со стандартным терминальным приложением, с bash 4.0 через homebrew

Однако, если я запускаю скрипт, содержащий команду выхода, ожидается, что он выйдет из скрипта. Вместо этого сессия заканчивается, и моя вкладка исчезает.

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

Что может вызвать это?

В качестве sidenote, вот моя подсказка bash и т.д.

2 ответа2

2

Я запускаю это с . script

Это означает, что вы выполняете скрипт в вашей текущей оболочке, поэтому выход убивает вашу текущую оболочку. Это ожидаемое поведение.

Вы, вероятно, должны либо

  1. дать сценарию разрешения на выполнение (chmod u+x script) и запустить ./script , или
  2. вызовите его с помощью bash script чтобы запустить его в новом процессе оболочки.
0

Это мой сценарий:

cat > doExitKeepShell.sh << EOF
#!/bin/bash
sleep 5
exit 0
EOF

и его исполняемый файл:

chmod u+x doExitKeepShell.sh

Запустите его, и вкладка закроется

$: . doExitKeepShell.sh
# wait 5 sec and window get closed

Запустите его так и подождите 5 секунд, чтобы продолжить работу с оболочкой

$: ./doExitKeepShell.sh 
# wait 5 sec till prompt return ;-)

Запустите его так и продолжайте работать

$: . doExitKeepShell.sh &
[1] PID    # <- this is your script in background
# Keep on working

Если вы хотите перейти к типу сценария

$: %

Если выполнение скрипта завершено, вы увидите s.th. как это

$: %
-bash: fg: job has terminated
[1]+  Done                    ./doExitKeepShell.sh

Если у вас есть несколько фоновых заданий, вы можете напечатать

$: % PID

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