Perlで環境変数を設定するにはどうすればよいですか?
$HOME
をデフォルトとは別のディレクトリに設定したい。
あなたはこのようにそれを行うことができます:
_$ENV{HOME} = 'something different';
_
ただし、これはスクリプトの残りの部分でのみ効果があることに注意してください。スクリプトが終了すると、 呼び出し元のシェルには変更が表示されません 。
_perldoc -v %ENV
_が言うように:
_
%ENV
_ハッシュ_%ENV
_には、現在の環境が含まれています。 「ENV」に値を設定すると、後で「fork()
」をオフにする子プロセスの環境が変更されます。
$ENV{'HOME'} = '/path/to/new/home';
perlrun も参照してください
Perlが開始されると、Perlは独自のサブシェルになります。そのサブシェルには、メインシェルでのみ使用可能なシェルファイルのソーシングなどのすべての機能が含まれているわけではありません。メインシェルの環境パスを設定することはできません。パスにアクセスする場所からシェルファイルがある場合は、コードでそれを使用できます。
Shell :: SourceであるCPANから外部モジュールをインストールすることでこれを行うことができます。
$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に存在するすべてのパスにアクセスできるようになります。