Вы, вероятно, не хотите делать exit 1
;это используется для обозначения сбоя.Вы бы использовали exit 0
для обозначения успеха - но, как описано ниже, в этом случае вы тоже не хотите этого делать.
Другая проблема заключается в том, что если вы запускаете скрипт как дочернийпроцесс, он не может влиять на среду родительского процесса.
Чтобы обойти это, в оболочках POSIX вам необходимо использовать:
. your_script.sh
или, в bash
, вы можететакже используйте:
source your_script.sh
Сценарий не обязательно должен быть исполняемым, просто читаемым, и его нужно искать в $PATH
, если вы не укажете имя, содержащее косую черту, как и другие команды.
И, когда вы делаете .
или source
, вы определенно не хотите, чтобы exit
в сценарии, потому что это приведет к закрытию основной оболочки.Оболочка читает файл так, как если бы вы набирали его при стандартном вводе (более или менее), поэтому выполнение exit
приведет к выходу из оболочки.