• 締切済み
  • 困ってます

unixのsourceコマンドについて教えて下さい

環境変数設定で ファイル(hoge.env)に #!/bin/csh set TEST=a と書きます。 unix> source hoge.env と実行すると、$TESTに環境変数が入ることを確認できますが ファイル(hoge.csh)に #!/bin/csh source hoge.env と書き実行すると、環境変数が設定されません。 最近まで、hoge.cshと実行し問題なく環境変数が設定されていたのですが今日は、これまでと違い環境変数が入りません。 こんなことってあるのでしょうか? OSはSunOS 5.8です 以上よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数3125
  • ありがとう数3

みんなの回答

  • 回答No.2

携帯からなんで簡素ですいません。記述が source ./ファイル名 でもかわらないですよね?

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • 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
  • source実行時の引数の渡し方

    SunOS 5.6を使っています。 cshのスクリプト(hoge.csh)を作成し、 %source hoge.csh p1 p2 p3 としたときに、 このスクリプトに引数p1,p2,p3をそれぞれ渡してやりたいのですが、上手く出来ません。(引数なし、と解釈されてしまう) 良い方法が無いでしょうか? よろしくお願いします。 関連 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1969769

  • bashのexportによる環境変数設定に関して教えてくださいませ。

    bashのexportによる環境変数設定に関して教えてくださいませ。 複数のファイルに記述している環境変数設定を まとめて実行したい場合はどのようにすればよいでしょうか。 例えば、 ◆hogeファイルの内容 export AAA=aaa soruce ./piyo ◆piyoファイルの内容 export BBB=bbb この状態で、 source hoge とすると、 AAA=aaaは設定されているのですが、 BBB=bbbは設定されないようです。 source の中からsource の記述はできないのでしょうか? source ./piyo 部分を ./piyo にしてもダメでした。

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

ん~, おかしいなぁ.... hoge.csh を実行しても環境変数の設定はできないはずなんだけど.... そう思ったわけ: hoge.csh を実行すると, 「現在のシェルとは別に」csh が起動されます. で, その csh の中で source するので, その csh の中では指定した環境変数が設定されます. が, その csh は hoge.csh の終了とともに終了するので, 現在のシェルには設定した環境変数は引き継がれないはず. ということなので, 「これまでは hoge.csh をどのように実行していたのか」などを書いてもらえませんか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

どうもお返事ありがとうございます。 これまで環境変数をセットする時、 1. unix>source hoge.csh 2. unix>hoge.csh 1,2どちからで、あまり意識せず実行してたのが原因であったと、気がつきました。1でhoge.cshの中でsourceの記述している上に、さらにsourceを実行しているため、混乱してしまったのではないかと思います。 ただ、これまで2で実行した時、何故うまくいってたのか、はっきりしてませんがたまたま、問題でなかったのかもしれません。 混乱させて申し訳ありませんでした。

関連するQ&A

  • 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
  • csh(Cシェル)のevalに関して

    evalを用いてインクルード的な事を行いたいのですが、「コマンドが見つかりません」が出てきて困っています 原因はなにがあるのでしょうか? 色々ネットで調べて同じように記述したつもりなのですが csh初心者で申し訳ありませんが 使い方が悪いのか、環境が悪いのか?判断できません 環境は別の人に作って貰ったんで、環境なら環境から勉強していきたいと考えてます ■TEST010.csh #!/bin/csh echo "TEST010-Step0010" eval `./TEST000.csh` echo "TEST010-Step0020" echo " set root_path $root_path;" echo "TEST010-Step0090" ■TEST000.csh #!/bin/csh set lcmoji01 = /export/home/tbn/km echo "set lcmoji01 $lcmoji01;" ■実行結果 > csh TEST010.csh TEST010-Step0010 ^M: コマンドが見つかりません。 TEST010-Step0020 lcmoji01: 未定義の変数

  • 環境変数の取得について

    Javaプログラムで環境変数を取得することって可能ですか?? 例えば任意の環境変数%TEST%なんかを設定してから実行したら 取得可能ですか??(OSはUnix上です) もしくはプロパティファイルかなんか設定ファイルを使用しても良いと考えているのですが、Unix上でResourceBundleクラスを使用するとき、ファイルの配置場所はどこにあれば良いのでしょうか??

    • ベストアンサー
    • Java
  • LINUXのsourceコマンド実行

    perlスクリプト内でLINUXコマンドのsourceを実行する方法はないでしょうか? system()を試みたところ、組み込みコマンドだとエラーとなってしまいます。 sourceしたいファイルの内容を解読して$ENV{~~}に設定する方法もあるかと 思いますが、何か単純にできる方法があるのではと思っております。

    • ベストアンサー
    • Perl
  • CSHの環境変数の設定

    CSHで外部で定義したconfigファイルから変数を読み込み そのシェル及び子シェル内で有効な変数として使用したのですが どのような方法がありますでしょうか? 以下の方法だと親シェルからでは子シェルで設定した変数が読み込めないため困っています。 config.csh #!/bin/csh -f setenv AAA aaa test.csh #!/bin/csh -f set APP_ROOT = `dirname $0` cd $APP_ROOT set CONFIG_FILE=$APP_ROOT"/config.csh" echo $AAA

  • 再度、バッチファイルについて質問

    次の文はBATファイルの一部分です。どういう意味か教えて下さい。 call %ztk_env%ZTK_SET_ENV.BAT '%'で囲まれた部分は環境変数であること、'call'が'ZTK_SET_ENV.BAT'を呼んでいることは理解しているのですが、環境変数と後ろのバッチファイルの関係がわかりません。どうか教えてもらえませんか?

  • フリーソフトMASM32に関する質問

    MASM32は、環境変数は、自分で設定しなければならないみたいなので、環境変数を以下のように設定したのですが MSDOSで、コンパイルのコマンドを打つと、エラーがでます これはどうすれば解決するのでしょうか ついでに使ってるOSはMeです ↓が付け加えた環境変数と、コンパイルのコマンドです SET PATH=C:\MASM32\BIN;%PATH% SET INCLUDE=C:\MASM32\INCLUDE;%INCLUDE% SET LIB=C:\MASM32\LIB;%LIB% コマンド ml /c test.asm

  • BATファイルについての質問

    次の文はBATファイルの一部分です。どういう意味か教えて下さい。 call %ztk_env%ZTK_SET_ENV.BAT '%'で囲まれた部分は環境変数であること、'call'が'ZTK_SET_ENV.BAT'を呼んでいることは理解しているのですが、環境変数を後ろのバッチファイルの関係がわかりません。どうかご教授お願いできませんか?

  • solarisのsetenvが無効

    shell 記述したsetenvが無効になります。 プロンプトから打ち込むとOKなのですが、 test.sh shellに ---------------------------------------------- #!/bin/csh setenv 環境変数 環境変数パス ---------------------------------------------- などと記述し、sh test.sh でプロンプトから 実行したときのsetenvでは無効になります。 root ではなく、通常ユーザなので、管理者が 制限をしているのかもしれませんが、 ログイン時の.cshrc に記述されたsetenvは有効になって いる様子で、パスが通らないと動かないDB用のコマンドが ちゃんと起動します。 どなたか、ご存知の方がいらっしゃいましたら 教えてください。宜しくお願い致します。

  • シェルファイル内での「setenv」、「unsetenv」の実行

    (UNIX環境) シェルファイル内にて 「setenv LANG ja_JP.SJIS」 「unsetenv LANG」 と記述し実行しようとしたのですが、 「setenv:not found」 「unsetenv:not found」 というエラーが出力されてしまいます・・・。 ちなみにコマンドをそのまま実行した場合は正常に処理されます。 kshにて実行されている為で、cshで実行しなければならないということでしょうか? 現在デフォルトにて何シェルが起動しているのか、どのようしたら分かるのでしょうか? 「env | grep csh」 と実行してみると「SHELL=/user/bin/csh」という結果がえられるのですが・・・。