( uzsolt | 2025. 10. 23., cs – 19:55 )

Ebből azt kellene látni, hogy az 'UN1' egy 'programot' tárol, amit a ${UN1} használatakor futatt, az 'UN2' viszont rögtön a program kimenetét tárolja.

Az UN1 deklaráláskor kiértékelődik (a shell hívás miatt). Innentől már az uname által visszaadott értéket tárolja, tehát nem fut le többször.

Egy egyszerű teszt:

VAL=	$(shell date)

all:
	@date
	@sleep 2
	@echo ${VAL}
	@sleep 2
	@echo ${VAL}

Mindhárom dátum ugyanaz lesz, nem lesznek 2 másodperces eltérések (azaz 2 másodperc múlva nem fut le még egyszer) - max. ha épp nagyon olyankor futtatod, hogy a VAL-féle date után az all első date-je között másodperc-váltás történik :D