如何在Perl中设置环境变量?
如何在Perl中设置环境变量如何在Perl中设置环境变量?,perl,environment-variables,Perl,Environment Variables,如何在Perl中设置环境变量 我想将$HOME设置为与默认目录不同的目录。您可以这样做: $ENV{HOME} = 'something different'; 但请注意,这只会对脚本的其余部分产生影响。当脚本退出时 正如perldoc-v%ENV所说: %ENV哈希%ENV包含当前环境。在“ENV”中设置一个值会更改您随后关闭的所有子进程的环境“fork()” 另请参见当perl开始使用时,它会创建自己的子shell。该子shell不包含仅适用于主shell的所有功能,如源化shell文件。
我想将
$HOME
设置为与默认目录不同的目录。您可以这样做:
$ENV{HOME} = 'something different';
但请注意,这只会对脚本的其余部分产生影响。当脚本退出时
正如perldoc-v%ENV
所说:
%ENV
哈希%ENV
包含当前环境。在“ENV”中设置一个值会更改您随后关闭的所有子进程的环境“fork()
”
另请参见当perl开始使用时,它会创建自己的子shell。该子shell不包含仅适用于主shell的所有功能,如源化shell文件。不能为主shell设置任何环境路径。 您可以做一件事,如果您有一个shell文件,您可以在代码中使用它来访问您的路径 您可以通过从CPAN安装外部模块来实现这一点,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在shell上运行时创建了自己的实例,因此我们不能为主shell设置环境路径,因为perl的实例类似于主shell的子shell。子进程无法为父进程设置环境路径
现在,在perl的子shell运行之前,您将能够访问temp.csh中存在的所有路径,这很简单,但是您可以使用系统调用VBS脚本(“cscript your_VBS_script”),让它处理环境变量赋值。它将存在于打开的下一个shell中,而不是在这种情况下运行的shell。如果需要设置一个环境变量以供导入的另一个Perl模块查看,则需要在
开始
块中进行设置
例如,如果使用
ing DBI(或依赖于它的另一个模块,如Mojo::Pg),并且希望在脚本中设置DBI_TRACE
环境变量:
use DBI;
BEGIN {
$ENV{DBI_TRACE}='SQL';
}
如果不将其放入BEGIN
块,脚本将看到环境变量,但在设置环境变量之前,DBI
将已经导入
use DBI;
BEGIN {
$ENV{DBI_TRACE}='SQL';
}