Как установить переменную окружения в Perl?

perl environment-variables

28849 просмотра

4 ответа

2608 Репутация автора

Как установить переменную окружения в Perl?

Я хочу установить $HOMEв другой каталог, чем по умолчанию.

Автор: user7305 Источник Размещён: 17.11.2009 10:04

Ответы (4)


37 плюса

44027 Репутация автора

Решение

Вы можете сделать это так:

$ENV{HOME} = 'something different';

Но учтите, что это повлияет только на остальную часть вашего сценария. Когда ваш скрипт завершается, вызывающая оболочка не увидит никаких изменений .

Как perldoc -v %ENVговорит:

%ENVХеш %ENVсодержит вашу текущую среду. Установка значения в «ENV» изменяет среду для любых дочерних процессов, которые вы впоследствии « fork()» выключаете.

Автор: innaM Размещён: 17.11.2009 10:08

8 плюса

772 Репутация автора

$ENV{'HOME'} = '/path/to/new/home';

Также смотрите Perlrun

Автор: David Размещён: 17.11.2009 10:08

1 плюс

104 Репутация автора

Когда 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

Автор: Mak_Thareja Размещён: 10.07.2013 05:25

-2 плюса

9 Репутация автора

Это глупо, но вы можете вызвать сценарий VBS, используя систему («cscript your_vbs_script»), чтобы он обрабатывал присвоение переменных среды. Он будет существовать для следующей открытой оболочки, а не для запущенной в этом случае.

Автор: Cosmic Dust Размещён: 10.12.2013 09:23
Вопросы из категории :
32x32