• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:cshのechoに関して)

cshのechoに関して

このQ&Aのポイント
  • cシェルでのechoコマンドに関する質問です。クラスパスの設定時に発生しているエラーについて解決策を教えてください。
  • 現在、cシェルでJavaを実行するプログラムを組んでいます。クラスパスの設定時にエラーが発生しており、うまくパスがセットされていないようです。
  • 具体的には、クラスパスを設定した際に、期待しているパスとは異なる結果が出てしまいます。この問題の解決策を教えていただけませんか?

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

よく見たら、「/libe/user/test」と出力されるんですね 「/home/user/test」じゃなくて。 それで、わかりました。 改行コードがDOS(CR+LF)のスクリプトを、 cshがunix系の改行コード(LF)として実行としています。 set class_home=/home/user/test が set class_home=/home/user/test[CR] ([CR]はCRのコード)と解釈されて set lib_home=${class_home}/lib が set lib_home=/home/user/test[CR]/lib になって echo ${lib_home} で /home/user/test まで表示したところでCRで行頭に移動、その続きの /lib を表示するので、 画面上には後からの出力された文字だけが残るので /libe/user/test と表示される、ということです。 スクリプトの改行コードをLFにしてください。 エディタで設定を変えるとか、ツールを使うとかやりかたがありますが、これ以上詳しくは、あなたがどんな環境やOSを使用しているか、わからないので、説明できません。

system0001
質問者

お礼

ご回答ありがとうございました。 改行コードが原因でした。 ご指摘頂いてとても助かりました。 本当にありがとうございました。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

こちらでは再現しませんでした(手元にtcshしかないので、その差かもしれませんが) やってみるべきことしては ・-xや -v オプションで実行の様子を確認する ・set lib_home="${class_home}/lib" 等とダブルクォートで括る ・B-sh系にする くらいでしょうか

system0001
質問者

お礼

ご回答ありがとうございました。 改行コードが原因でした。 まだまだシェルは使いこなせていないので 色々と勉強してみます。 本当にありがとうございました。

関連するQ&A