Когда Perl запускается, он создает собственную суб-оболочку. Эта вложенная оболочка не содержит всех функций, таких как получение файла оболочки, которые доступны только для основных оболочек. Вы не можете установить какой-либо путь для вашей основной оболочки.
Вы можете сделать одну вещь, если у вас есть файл оболочки, откуда вы хотите получить доступ к своим путям, вы можете использовать его в своем коде.
Вы можете сделать это, установив внешний модуль из CPAN, который является Shell :: Source.
$env_path= Shell::Source->new(shell=>"tcsh",file=>"../path/to/file/temp.csh");
$env_path->inherit;
print "Your env path: $ENV{HOME}";
Поскольку perl создает свой собственный экземпляр во время работы на оболочке, мы не можем установить путь к среде для основной оболочки, поскольку экземпляр perl будет похож на вложенную оболочку основной оболочки. Дочерний процесс не может установить пути среды для родителей.
Теперь, пока не будет запущена вложенная оболочка perl, вы сможете получить доступ ко всем путям, присутствующим в вашем temp.csh