2

我有一个 Perl 脚本,它有一个像my $name. 我们可以将 $name 的内容设置为可以导入其他文件并在其他文件中使用的环境变量吗?

我试过$ENV{NAME}=name了,但这不起作用。

4

2 回答 2

8

如果要影响进程或子进程的环境,只需使用%ENV哈希:

$ENV{CVSROOT}='<cvs>';

如果你想影响你的父进程的环境,你不能。至少不是没有父进程的合作。标准流程是发出一个 shell 脚本并让父进程执行该 shell 脚本:

#!/usr/bin/perl -w
print 'export CVSROOT=<cvs>';

...并从外壳(脚本)调用该脚本:

eval `myscript.pl`
于 2012-09-13T12:26:55.873 回答
2

环境变量特定于进程。当子进程产生时,它继承其父环境变量的副本,但它对它们所做的任何更改都仅限于它自己以及它在更改后产生的任何子进程。

所以不,你不能在你运行的脚本中为你的 shell 设置一个环境变量。

于 2012-09-13T12:30:46.863 回答