Таким образом, нижняя строка здесь - то, что я пытаюсь иметь одну дежурную работу сценария для установки переменных среды (давайте назовем ее setenv.sh
) это будет использоваться в последующих сценариях. В Windows (я знаю, это - слово с 4 буквами здесь...), я могу использовать пакетный файл для установки переменной среды для того, после того, как пакетный файл закончен. Я ищу тот же самый эффект.
Однако я только что учился посредством просматривания Интернета, который набор переменных среды в сценарии (иначе оболочка) только сохраняет в дочерних оболочках и не влияет на родительские оболочки. Хорошо безотносительно, хорошо теперь то, что я хочу знать, является банкой, я запускаю скрипт, встроенный в другом сценарии? Встроенным я говорю о чем-то аналогичном C/C++ #include
директива. Я хочу это, потому что, если я могу назвать сценарий, как будто он работал в текущем сценарии, мои переменные среды, по крайней мере, сохранятся через продолжительность моего желаемого сценария.
Например, что-то вроде этого:
cat ~/install/setenv.sh | /bin/bash
echo "JBoss home directory is set to $JBOSS_HOME"
Но я понимаю, что даже это не будет вполне работать, и я запускаю дочернюю оболочку с вызова к /bin/bash
. Хорошо, если я должен назвать это setenv.sh
для каждого сценария я хочу, чтобы это работало встроенный с.
если Вы хотите включать огибающие переменные, можно установить те переменные в файле, и затем source
что файл в сценарии.
, Например: в myconfig я мог сделать:
#!/bin/bash
EDITOR=emacs
JBOSS_HOME=/path/to/jboss/home
тогда в моем сценарии оболочки:
#!/bin/bash
source /path/to/myconfig
echo "JBOSS home dir is $JBOSS_HOME"
и это работало бы.