Я читав тут, що мета export
оболонки - зробити змінну доступною для підпроцесів, запущених з оболонки.
Однак я також тут і тут читав, що "Процеси успадковують своє середовище від свого батька (процес, який їх запустив)".
Якщо це так, навіщо нам це потрібно export
? Що я пропускаю?
Чи змінні оболонки за замовчуванням не є частиною середовища? Яка різниця?
set -k
це так, що можна використовуватиcmd ENVVAR=value
замістьENVVAR=value cmd
, що не працюватиме у вашому прикладі, якщо неset -k
було запущено до викликуf
. Крім того, не багато снарядів підтримують його в наш час і лише для зворотної сумісності з оболонкою Борна. У оболонці Bourne (або Korn) це не працює для функцій. А оскільки це впливає на розбір оболонки, він повинен діяти в момент, коли оболонка читає код, який використовує там.