• ベストアンサー

『存在するかどうか分からない』環境変数にcshで新しいパスを設定したい

Linuxを利用しており、「『存在するかどうか分からない』環境変数に新しいパスを設定したい」のですが、うまくいきません。 言い方を変えると、対象の環境変数が存在しようが存在しまいが、うまくいくようにしたいのです。 具体的には、ログインシェルに tcsh を使用しているため、hogehoge.cshを作成し、/etc/csh/login.d/に入れました。hogehoge.cshの内容は以下のようになります。 #!/bin/csh setenv HOGEHOGEPATH /usr/lib/hogehoge:${HOGEHOGEPATH} ログインしてみると HOGEHOGEPATH: Undefined variable. といった内容のエラーが表示され、環境変数も設定されません。 shで設定する方法もありますがcshで良い書き方はないでしょうか。ご教示お願いいたします。

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

  • ベストアンサー
noname#136147
noname#136147
回答No.3

私の環境の/etc/profile.d/*.cshを参考にすると ============================================ #!/bin/csh if ( $?HOGEHOGEPATH ) then setenv HOGEHOGEPATH /usr/lib/hogehoge:${HOGEHOGEPATH} else setenv HOGEHOGEPATH /usr/lib/hogehoge endif ============================================ のように変数が設定されている場合と されていない場合を分岐させて書いてありました

soo-dell
質問者

お礼

ありがとうございます。無事設定することができました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • yasuya
  • ベストアンサー率16% (35/216)
回答No.2

環境変数:HOGEHOGEPATH にはsetenvしたけど シェル内部変数の${HOGEHOGEPATH}には、何も入れてないからでは?

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

csh なんか使ってないけど, $?なんちゃら で存在するかどうかをチェックする?

soo-dell
質問者

お礼

変数チェックの方法が分からず悩んでいました。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 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

  • csh (tcsh)での環境変数の長さの制限について教えて下さい。

    Solaris8 (SPARC)上でJavaでいろいろ開発をしているのですが、 シェルの環境変数の長さに制限があるようで困っています。 具体的には、あちこちに散在しているjarファイルを参照する必要 があるので、環境変数 $CLASSPATHが非常に長くなっていて、 現在の設定以上に CLASSPATHを追加しようとすると「Word too long」 というエラーが出て設定できません。 1つの環境変数の長さの制限を変更することは可能でしょうか? もしくはなにか回避策があれば教えて下さい。 使用しているシェルは tcsh です。

  • 環境変数の設定

    OS:MacOS10.4.7 ant version:1.6.5 antの設定で困っています。macでの環境変数の設定(パスを通す)はどうすれば良いのか困っています。 現段階ではantをusr/localで展開し、シンボリックリンクを作成。 次段階の環境変数の設定で~/etc/csh.cshrcに setenv ANT_HOME /usr/local/ant set path=( $path $ANT_HOME/bin ) を加えたのですがantが動作しません。 どなたか解決方法・間違え点ありましたら教えてください。 宜しくお願いします!!

  • 標準入力からシェル変数及び環境変数に値を設定する(bash)

    標準入力からシェル変数及び環境変数に値を設定する方法で、cshの場合は「set 変数=$<」ということは確認しているのですが、bashの場合はどのようにすればよろしいのでしょうか?ご教授お願いいたします。

  • tcshなのにスクリプト構文中のsetenvが動かない。

    シェルスクリプトを勉強しております。 testと名付けたファイルに スクリプトの構文の頭に#!/bin/tcshを記入せず setenv(csh系だけで動くコマンド)のみを記載して 実行権を与えて ./test と打つと etenv: command not found になってしまいます。 ここで、やりたいことは文頭にシェルを指定せずに 実行をすると、現在のtcsh上で実行されるはずなのに setenv: command not found になってしまうところに疑問がございます。 ログインシェルをtcshに変えたりも試してみても 疑問が解決しないので、なにかアドバイス等でもいただけないでしょうか。よろしくお願い致します。

  • 環境変数の設定

    こんにちは。 CGIを書いているのですが、CGIが実行されるときの環境変数の設定方法で悩んでいます。 Apacheを使っているので、httpd.conf内でSetEnvを使えばいいらしいことはわかったのですが、httpd.confを変更するとなると、管理者権限が必要です。 例えば、.htaccessとかで設定できると、環境変数の変更が管理者権限なしで可能になるので、便利なのですが。 なにかよい方法はないものでしょうか?よろしくお願いします。

    • ベストアンサー
    • CGI
  • tcsh のプロンプト

    csh のプロンプトは % だと思うのですが、tcsh のプロンプトはデフォルトでは > なのでしょうか?ログインシェルを tcsh にしたのですが、プロンプトが % でないので、なんだか bash を使ってるような気分です。これやっぱり bash になってませんか? 環境は、FreeBSD です。

  • .cshrcでのエラー

    シェル初心者です。 現在、さくらのレンタルサーバで.cshrcの設定を行っています。 os :FreeBSD 9.1 64bit Perl : Ver.5.8.9です。 http://d.hatena.ne.jp/perlcodesample/touch/20101027/1278596435を参考にして .cshrc内に setenv PERL5LIB /home/hogehoge/local/lib/perl5:/home/hogehoge/local/lib/perl5/site_perl:$HOME/perl5/lib/perl5:$PERL5LIB; # @@ Added by CPAN local setup tool @@ setenv PERL_CPANM_OPT="--local-lib=~/perl5"; という記述を追加しましたが % source .cshrcを実行すると setenv: Variable name must contain alphanumeric characters. というエラーが出ます。 何やら変数名をアルファベットで書けと言っているようですが、 #setenv PERL_CPANM_OPT="--local-lib=~/perl5"; というようにこの一行をコメントアウトするとエラーは出ません。 どこがまずいのでしょうか? 初歩的な質問で恐縮ですが、宜しくご教授お願いいたします。

  • Linux環境変数設定(putenv?setenv?)

    RedHatLinux7.3(2.96-110)、gcc(2.96 20000731)です。 C言語でプログラミングしていますが、環境変数設定がうまくいかず困っています。 下記の2つで試しましたが、どちらも戻り値は正常(0)なのに環境変数には設定されないのです。 その1: nRet = putenv( "HOGE_HOGE_VER=1.0.0" ); その2: nRet = setenv( "HOGE_HOGE_VER", "1.0.0", 1 ); この使い方は間違っているのでしょうか?それと、putenv、setenvの違いはなんなのでしょうか? ちなみに、既に設定されている環境変数をgetenvすることは、ちゃんとできるのですが。 よろしくお願いします。

  • 環境変数の設定

    Servletでコンパイルをすると、 パッケージ javax.servlet.http, javax.servletは存在しないなどと いうエラーメッセージが出てしまいます。 原因が環境変数の設定が悪いという事はわかっているのですが、 何度設定してもエラーが出てしまって、困っております。 CLASSPATH .;C:\Tomcat 4.1.34\common\lib\servlet.jar このように設定をしているのですが、何が悪いのでしょうか・・・。 よろしくお願いします。

    • ベストアンサー
    • Java
パソコンから印刷ができない
このQ&Aのポイント
  • パソコンから印刷できない問題について相談します。コントロールパネルからのテスト印刷でもうまくいかなかったようです。
  • 質問者はWindows7を使用し、無線LANで接続しています。電話回線はひかり回線です。
  • 関連するソフト・アプリについては情報がありません。
回答を見る