variable una script resultado pasar parametros guardar funciones entorno ejecutar cómo crear con comando shell makefile environment-variables target

shell - una - variables de entorno linux bash



Cómo establecer la variable de entorno en Makefile (3)

Me gustaría cambiar este Makefile:

SHELL := /bin/bash PATH := node_modules/.bin:$(PATH) boot: @supervisor / --harmony / --watch etc,lib / --extensions js,json / --no-restart-on error / lib test: NODE_ENV=test mocha / --harmony / --reporter spec / test clean: @rm -rf node_modules .PHONY: test clean

a:

SHELL := /bin/bash PATH := node_modules/.bin:$(PATH) boot: @supervisor / --harmony / --watch etc,lib / --extensions js,json / --no-restart-on error / lib test: NODE_ENV=test test: mocha / --harmony / --reporter spec / test clean: @rm -rf node_modules .PHONY: test clean

Desafortunadamente, el segundo no funciona (el proceso de nodo aún se ejecuta con el NODE_ENV predeterminado NODE_ENV .

¿Qué me perdí?


Como señaló MadScientist , puede exportar variables individuales con:

export MY_VAR = foo

También puede especificar el destino .EXPORT_ALL_VARIABLES para ... ¡lo adivinó! ¡EXPORTA TODAS LAS COSAS!

.EXPORT_ALL_VARIABLES: MY_VAR = foo test: @echo $$MY_VAR

ver .EXPORT_ALL_VARIABLES


Las variables make no se exportan al entorno de procesos make invoca ... de forma predeterminada. Sin embargo, puede usar la export de make para obligarlos a hacerlo. Cambio:

test: NODE_ENV = test

a esto:

test: export NODE_ENV = test

(suponiendo que tiene una versión suficientemente moderna de la marca GNU).


Solo necesitaba las variables de entorno localmente para invocar mi comando de prueba, aquí hay un ejemplo que establece varios vars de entorno en un intérprete de comandos bash y que escapa del signo de dólar en make .

SHELL := /bin/bash .PHONY: test tests test tests: PATH=./node_modules/.bin/:$$PATH / JSCOVERAGE=1 / nodeunit tests/