Если Вы действительно хотите exit
на ошибке и используют Bash, затем необходимо также рассмотреть set -e
. От help set
:
- e Выход сразу, если команда выходит с ненулевым состоянием.
Это, конечно, не дает Вам гибкость did_it_work () функция, но это - простой способ удостовериться Ваши остановки сценария удара на ошибке, не добавляя много вызовов к Вашей новой функции.
Когда Вы говорите "только для этой сессии удара", я предполагаю, что Вы имеете в виду сессию удара, которая называет сценарий.
При выполнении сценария это получает новую среду оболочки. Таким образом при экспорте переменных Вы экспортируете его в новую среду оболочки и не ее родительскую среду. Насколько я знаю, нет никакого способа получить доступ к родительской среде. Однако, так как Вы используете удар, может быть несколько решений:
Использовать source
Вместо того, чтобы выполнять сценарий как это: /path/to/init.sh
сделать source /path/to/init.sh
Из страницы справочника удара:
исходное имя файла [аргументы]
Считайте и выполните команды от имени файла в текущей среде оболочки и возвратите статус выхода последней команды, выполняемой от имени файла.
Сделайте свой сценарий функцией оболочки и поместите его в .bashrc
Другая опция состоит в том, чтобы сделать init функцией и поместить его в .bashrc как это:
function init {
export PATH=$PATH:/home/me/morph_numsys/software/bin
}
Затем от терминала можно просто работать init
.