我有一个Perl脚本,它有一个像my $name
这样的变量。我们可以将$ name的内容设置为我们可以导入并在其他文件中使用的环境变量吗?
我尝试了$ENV{NAME}=name
,但这不起作用。
答案 0 :(得分:8)
如果您想影响流程或子流程的环境,只需使用%ENV
哈希:
$ENV{CVSROOT}='<cvs>';
如果您想影响父进程的环境,则不能。至少没有父进程的合作。标准过程是发出一个shell脚本并让父进程执行该shell脚本:
#!/usr/bin/perl -w
print 'export CVSROOT=<cvs>';
...并从shell(脚本)调用该脚本:
eval `myscript.pl`
答案 1 :(得分:2)
环境变量特定于流程。当生成子进程时,它会继承其父进程的环境变量的副本,但它对它们所做的任何更改都只限于它自己以及它在更改后产生的任何子进程。
所以不,你不能在你运行的脚本中为你的shell设置一个环境变量。