Сценарий оболочки для экспорта переменных окружения в make - PullRequest
1 голос
/ 29 февраля 2012

Я хочу использовать скрипт ksh для настройки некоторых переменных окружения, которые мой make-файл позже будет использовать.Я пытался сделать:

setup:
   . myscript

Но это дает мне ошибки типа [[: not found.

Есть ли способ использовать внешний скрипт для загрузки переменных среды для make?

Ответы [ 2 ]

3 голосов
/ 29 февраля 2012

Вы можете изменить оболочку , используемую в make-файле:

SHELL = /usr/bin/ksh # Or whatever path it's at

Но это, вероятно, хорошая идея преобразовать скрипт во что-нибудь, совместимое с /bin/sh (в идеале полностью POSIX-совместимым), если вы хотите, чтобы он нормально работал на других платформах.

0 голосов
/ 01 марта 2012

Осторожно, это, вероятно, не будет работать должным образом: поскольку каждая команда Makefile выполняется в своем собственном подоболочке, источник myscript будет изменять только локальную среду, а не всю среду Makefile.1004 *

debug: setup
    @echo "*** debug"
    export | grep ENVVAR || echo "ENVVAR not found"                   #(a)

setup:
    @echo "*** setup"
    export ENVVAR=OK; export | grep ENVVAR || echo "ENVVAR not found" #(b)
    export | grep ENVVAR || echo "ENVVAR not found"                   #(c)

вывод:

$ make debug
*** setup
export ENVVAR=OK; export | grep ENVVAR || echo "ENVVAR not found" #(b)
export ENVVAR='OK'

export | grep ENVVAR || echo "ENVVAR not found"                   #(c)
ENVVAR not found

*** debug
export | grep ENVVAR || echo "ENVVAR not found"                   #(a)
ENVVAR not found

Как видите, ENVVAR находится только в команде (b), но команды (a) и (b) выполняются в новом, чистомокружающая среда.

...