Когда вы вызываете вторую команду, это не выполняется в среде, которую вы изменили в первой команде. На самом деле, - это , от первой команды не осталось среды, потому что оболочка, используемая для вызова "environment_defaults.sh", уже закрылась.
Чтобы сохранить контекст первой команды во второй, вызовите их в той же оболочке:
system("source environment_defaults.sh && obe");
Обратите внимание, что вам нужно вызывать сценарий оболочки с source
для выполнения его действий в текущей оболочке, а не вызывать новую оболочку для их выполнения.
В качестве альтернативы, измените свою среду в начале каждой оболочки (например, с помощью .bash_profile, если используется bash), или измените переменную среды в самом perl:
$ENV{FOO} = "hello";
system('echo $FOO');