のような変数を持つ Perl スクリプトがありますmy $name
。$name の内容を、インポートして他のファイルで使用できる環境変数として設定できますか?
のように試し$ENV{NAME}=name
ましたが、これは機能しません。
プロセスまたは子プロセスの環境に影響を与えたい場合は、%ENV
ハッシュを使用してください。
$ENV{CVSROOT}='<cvs>';
親プロセスの環境に影響を与えたい場合は、できません。少なくとも、親プロセスの協力なしではありません。標準的なプロセスは、シェル スクリプトを発行し、親プロセスにそのシェル スクリプトを実行させることです。
#!/usr/bin/perl -w
print 'export CVSROOT=<cvs>';
...そして、シェル(スクリプト)からそのスクリプトを次のように呼び出します。
eval `myscript.pl`
環境変数はプロセスに固有です。子プロセスが生成されると、その親の環境変数のコピーを継承しますが、それらに加えられる変更は、それ自体と、変更後に生成されるすべての子に制限されます。
いいえ、実行するスクリプト内からシェルの環境変数を設定することはできません。