временная установка пути в “init” файле

Если Вы действительно хотите exit на ошибке и используют Bash, затем необходимо также рассмотреть set -e. От help set:

- e Выход сразу, если команда выходит с ненулевым состоянием.

Это, конечно, не дает Вам гибкость did_it_work () функция, но это - простой способ удостовериться Ваши остановки сценария удара на ошибке, не добавляя много вызовов к Вашей новой функции.

2
09.10.2010, 01:22
1 ответ

Когда Вы говорите "только для этой сессии удара", я предполагаю, что Вы имеете в виду сессию удара, которая называет сценарий.

При выполнении сценария это получает новую среду оболочки. Таким образом при экспорте переменных Вы экспортируете его в новую среду оболочки и не ее родительскую среду. Насколько я знаю, нет никакого способа получить доступ к родительской среде. Однако, так как Вы используете удар, может быть несколько решений:

Использовать 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.

8
27.01.2020, 21:51

Теги

Похожие вопросы