Как установить переменную окружения в Perl?
28849 просмотра
4 ответа
Как установить переменную окружения в Perl?
Я хочу установить $HOME
в другой каталог, чем по умолчанию.
Ответы (4)
37 плюса
Вы можете сделать это так:
$ENV{HOME} = 'something different';
Но учтите, что это повлияет только на остальную часть вашего сценария. Когда ваш скрипт завершается, вызывающая оболочка не увидит никаких изменений .
Как perldoc -v %ENV
говорит:
Автор: innaM Размещён: 17.11.2009 10:08
%ENV
Хеш%ENV
содержит вашу текущую среду. Установка значения в «ENV» изменяет среду для любых дочерних процессов, которые вы впоследствии «fork()
» выключаете.
8 плюса
1 плюс
Когда 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 плюса
Это глупо, но вы можете вызвать сценарий VBS, используя систему («cscript your_vbs_script»), чтобы он обрабатывал присвоение переменных среды. Он будет существовать для следующей открытой оболочки, а не для запущенной в этом случае.
Автор: Cosmic Dust Размещён: 10.12.2013 09:23Вопросы из категории :
- perl Как определить, имеет ли переменная число в Perl?
- perl Как я могу проверить STDIN без блокировки в Perl?
- perl Как выполнить подстановку Perl для строки, сохранив оригинал?
- perl Какой самый простой способ установить отсутствующий модуль Perl?
- perl Что происходит с Perl 6?
- perl Как запустить интерактивную консоль для Perl?
- perl Как я могу создать XML из Perl?
- perl Какой лучший движок XSLT для Perl?
- perl Что "select ((select (s), $ | = 1) [0])" делает в Perl?
- perl Как я могу получить длину строки в Perl?
- environment-variables Установка переменных среды в OS X
- environment-variables Есть ли команда для обновления переменных среды из командной строки в Windows?
- environment-variables Как получить и установить переменные окружения в C #?
- environment-variables Есть ли способ изменить переменные окружения другого процесса в Unix?
- environment-variables Переменные среды в powershell с точкой (.) В названии
- environment-variables Использование переменных окружения в T-SQL
- environment-variables Могу ли я подобрать переменные среды в сценарии WSH vbscript?
- environment-variables Отключить утверждения в Python
- environment-variables Установить переменную окружения для сборки в Hudson
- environment-variables Глобальные переменные среды в сценарии оболочки