• ベストアンサー

Perlで環境変数を設定するには

あるPathを環境変数として設定したい場合、 例)TNS_ADMIN=D:\Test\exe たとえばMS-DOSなら、 set TNS_ADMIN=D:\Test\exe と設定しますよね。 これと同じことをPerlでどうやればいいのかというのが質問です。 ENVモジュールを使って、 $ENV{TNS_ADMIN}=D:\Test\exe としてみたものの、Perlを実行した後に確認してみるとセットされていないようでした。 (確認方法はPerlを実行したDOSプロンプトにて"set"を実行) よろしくお願いします。

  • Perl
  • 回答数4
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

>>破棄された後に確認しても、わかりません。 >どうにかその環境変数がセットされていることを確認する方法ってないのでしょうか? perlで子プロセスを起動すれば確認できます。 例えば、NT系のOSであれば... 次のスクリプトを用意。 #!c:\perl\bin\perl.exe $ENV{"TNS_ADMIN"}="D:\\Test\\exe"; system("cmd"); それを実行すると、コマンドプロセッサが表示されるので、 set[return] すれば、子プロセスの環境変数が確認できます。 確認後、exit[return]すると、子プロセスが終了するので、 親プロセスたるperlも終了する。

その他の回答 (3)

回答No.3

>ENVモジュールを使って、 >$ENV{TNS_ADMIN}=D:\Test\exe としてみたものの、Perlを実行した後に確認してみるとセットされていないようでした。 >(確認方法はPerlを実行したDOSプロンプトにて"set"を実行) perl自身のプロセスに対しては有効ですが、perlが終了するときに、 破棄されますので、 破棄された後に確認しても、わかりません。 $ENV{TNS_ADMIN}="D:\\Test\\exe"; するのであれば、オラクル関係のプロダクトを使うための前処理だと思いますが、 そのperl上で、オラクル関係のプロダクトを起動するならば、それに対しては 有効ですので、目的は達成できるのではないかと思います。

steel_50130
質問者

補足

返信ありがとうございます。 >破棄された後に確認しても、わかりません。 どうにかその環境変数がセットされていることを確認する方法ってないのでしょうか?

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

Perlに限らず、起動したプロセス(アプリケーション)は、親の環境を引継ぎますが、実行中の環境は、いわばコピーなので、親の環境を直接変更することはできません。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

無理です.

関連するQ&A

  • perl Tk を使ったWindows向けのGUIのスクリプトをpar

    perl Tk を使ったWindows向けのGUIのスクリプトをparモジュールをつかってEXE化 しました。作成されたEXEを実行するとDOSプロンプトが開いてしまうのですが、DOSプロンプトが表示しないようにする方法ってありますか?

  • perlの実行環境について

    perlの実行環境に影響する部分は ■perlのバージョン ■httpd.conf ■perlモジュール 以外にあるのでしょうか。 例えば、phpでいうとphp.iniのような設定ファイルなどです。 ■perlのバージョン ■httpd.conf ■perlモジュール の設定がまったく同じ二つの環境で、 一方で使える関数がもう一方で使えない、ということが以前にありました。 肝心のその関数が何だったかを忘れてしまったのですが。

  • CreateProcessでの環境変数の設定の仕方

    PATHを設定してCommand.comを実行したいのですが、 CreateProcessでの環境変数の設定の仕方がわかりません char* env = "PATH=c:\\data"; CreateProcess(NULL,"command.com /k path ", NULL, NULL, FALSE, 0, env, NULL, &si, &pi); このようにしてみたところDos窓が起動しますが、 表示されるPATHはデフォルトのままです。 環境は VC++6.0 MFC です。 どうか宜しくお願いします。

  • Javaの環境変数の設定について。

    独習Javaで環境変数の設定でつまずいて先に進めない状態です。Autoexec.batというファイルにC:\Program Files\Java\jdk1.5.0\BINというパスを追加しても再起動をかけると「パラメーターが多すぎます」というエラーが出てsafe modeでパスを消去しないといけなかったり、MS-DOSで実際にコンパイルをしようとしても「コマンドまたはファイル名が違います」というエラーが出ます。 OS:Windows98 Autoexec.batの内容は SET DOS4G=QUIET C:\PROGRA~1\NETWOR~1\MCAFEE~1\SCAN.EXE C:\ /NOBREAK /SILENT @IF ERRORLEVEL 1 PAUSE @ECHO OFF loadhigh c:\windows\COMMAND\nlsfunc.exe c:\windows\country.sys SET PATH=C:\FJUTY; REM Environment Settings For McAfee VirusScan SET PATH=%PATH%;C:\PROGRA~1\NETWOR~1\MCAFEE~1;C:\Program Files\Java\jdk1.5.0\BIN です。 どのようにしたらコンパイル、実行出来るように なるでしょうか? 最初でつまずいて先に進めないので どなたか教えて下さい。よろしくお願いします。

  • DOSバッチで変数の値を変数名に設定したいのですが、可能でしょうか?

    DOSバッチで変数の値を変数名に設定したいのですが、可能でしょうか? 例として、以下のようにVARという変数に対して、ある文字列を設定し、その文字列の名前の変数の値を別の変数に代入したいのです。 set VAR="TMP" if /i "%VAR%"=="TMP" (SET TEST=%%VAR%%) echo %TEST% ここで求めている挙動は、SET TEST=%%VAR%%の命令によって SET TEST=%TMP% → SET TEST=C:\Windows\Temp のように展開されればいいのですが、実際はSET TEST=%VAR%となってしまいます。 なにか良い方法がないでしょうか?

  • Java8に環境変数は設定されているのでしょうか?

    # env | grep -i javaroot@Vostro:~# dpkg --list | grep oracle-java ii oracle-java8-installer 8u191-1~webupd8~1 all Oracle Java(TM) Development Kit (JDK) 8 ii oracle-java8-set-default 8u191-1~webupd8~1 all Set Oracle JDK 8 as default Java root@Vostro:~# java -version java version "1.8.0_191" Java(TM) SE Runtime Environment (build 1.8.0_191-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode) root@Vostro:~# apt-get install oracle-java8-set-default パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 oracle-java8-set-default はすでに最新バージョン (8u191-1~webupd8~1) です。 oracle-java8-set-default は手動でインストールしたと設定されました。 アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 1 個。 root@Vostro:~# env | grep -i java root@Vostro:~# # env | grep -i java に返事がありません。環境変数は設定されているのでしょうか? ご多忙中すみません。 ご回答の程、宜しくお願い申し上げます。

    • ベストアンサー
    • Java
  • Java8に環境変数は設定されているのでしょうか?

    root@Vostro:~# dpkg --list | grep oracle-java ii oracle-java8-installer 8u191-1~webupd8~1 all Oracle Java(TM) Development Kit (JDK) 8 ii oracle-java8-set-default 8u191-1~webupd8~1 all Set Oracle JDK 8 as default Java root@Vostro:~# java -version java version "1.8.0_191" Java(TM) SE Runtime Environment (build 1.8.0_191-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode) root@Vostro:~# apt-get install oracle-java8-set-default パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 oracle-java8-set-default はすでに最新バージョン (8u191-1~webupd8~1) です。 oracle-java8-set-default は手動でインストールしたと設定されました。 アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 1 個。 root@Vostro:~# env | grep -i java root@Vostro:~# # env | grep -i java に返事がありません。環境変数は設定されているのでしょうか? ご多忙中すみません。 ご回答の程、宜しくお願い申し上げます。

    • ベストアンサー
    • Java
  • Win98+PWS4.0でPERLが動作しません

    Win98+PWS4.0でPERLを動作させたいのですがうまくいきません。 ディレクトリ「Inetpub」-「scripts」へTEST.PLという名で 下記のプログラムを入れて実施すると、 --------------- #!/user/local/bin/perl print "Content-type: text/html\n\n"; print "<html>\n"; print "<body>\n"; print "<p>\n"; print "Hello\n"; print "</p>\n"; print "</body>\n"; print "</html>\n"; --------------- HTTP エラー 403 403.1 許可されていません: 実行アクセスは許可されていません --------------- と出ます。 レジストリの設定は ".pl",".cgi”とも「C:\Perl\Bin\Perl.exe %s %s 」として、 PWSの設定で「scripts」は”実行””スクリプト”とも チェエク入をれています。 「wwwroot」のルートへ置いても同様のエラーが発生します。 DOS窓から「Inetpub」-「scripts」内でTEST.PLとすると 正常に表示はされます。 PerlへのパスもC:¥から実行確認済みです。 何が原因と考えられるでしょうか。 宜しくご教示お願いします。

  • Perl から csh 実行

    やまとです。 いつもありがとうございます。 Perl + csh を同時(?)に実行する方法を教えてください。 OSはSunです。 具体的にどのような処理を行いたいか簡単に説明しますと。 1.Perlでcshを実行(system関数?)し、cshで環境変数をセット(source)する。 2.cshで環境変数をセットしたら、ファイルを出力する処理が行われます。 3.Perlでcshによって出力されたファイルの内容を画面に表示します。 以下ソースを掲載します。(抜粋して) ================================================== = Perl ( test_perl.pl ) $data = "ABC"; $ret = system(`test_csh.sh $data`); ・ ・ ファイル(test.log)を開き、読込、画面に表示します(まだ作成してません。) ================================================== = Csh ( test_csh.sh ) source test_source.sh echo $1 > test.log ================================================== = test_source.sh setenv CLASSPATH .:/aaa・・・・・・ ↑ PATHの設定を行ってます。 ================================================== 画面に、「ABC」と出力させたいのです。 Perlからcshが実行されていないように思えるのですが、 Perlのsystem関数の使い方が誤っているのでしょうか? それとも、ClassPath等の設定をしなければならないのでしょうか? ちなみにコマンドから、 # test_csh.sh ABC と実行しますと、ファイルが出力され、かつ、sourceも実行されています。 Perlから実行する方法を教えてください。 説明が不十分であれば、補足いたしますのでご指摘ください。 宜しくお願いします。

    • ベストアンサー
    • Perl
  • PerlをWinで使いたい。

    当方のパソコンのOSはWin XP SP2 です。 Perlの勉強を始めようと思いまして、 PerlがWinで使えるということなので、 Perl for Win32 Base Build 316 の日本語対応版をダウンロードしました。 C:\Perl\bin\フォルダの中のファイルは以下の通りです。 Jperl.exe Perl300.dll PerlGlob.exe XPerl.exe XPerlGlob.exe 別に中身が以下のようなtest.txtファイルを作りました。 $name = "KENT"; print "my name is $name", "\n"; print 'my name is $name', "\n"; それで、test.txtをJperlのアイコンにドラッグしました。 ms-dosの画面は出るのですが、何も表示されません。 お助け下さい。・・・m(_ _)m