Przeczytałem tutaj, że celem exportpowłoki jest udostępnienie zmiennej podprocesom uruchamianym z powłoki.
Jednak przeczytałem tu i tutaj, że „Procesy dziedziczą swoje środowisko po rodzicach (proces, który je rozpoczął)”.
Jeśli tak jest, dlaczego potrzebujemy export? czego mi brakuje?
Czy zmienne powłoki nie są domyślnie częścią środowiska? Jaka jest różnica?
set -kjest taki, że można użyćcmd ENVVAR=valuezamiastENVVAR=value cmd, który nie będzie działał w twoim przykładzie, chyba żeset -kzostał uruchomiony przed wywołaniemf. Ponadto niewiele powłok obsługuje go obecnie i tylko dla kompatybilności wstecznej z powłoką Bourne'a. W powłoce Bourne'a (lub Korna) nie działałoby to dla funkcji. A ponieważ wpływa na parsowanie powłoki, musi obowiązywać w momencie, gdy powłoka odczytuje kod, który z niej korzysta.