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
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/