- ベストアンサー
tcsh の complete の使い方
set hosts=(firsthost secondhost thirdhost) comlete setenv 'C/DI/(DISPLAY)/' 'p/1/e/' 'n/DISPLAY/$hosts/:0.0/' が思うように補完してくれません。 おそらく:をエスケープしなければいけないのでしょうが、 その仕方がわかりません。 教えてください。お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
私も試してみましたが、うまく行きませんでした。 それで、 tcsh のマニュアルを読み直してみると、エスケープの問題じゃないようです。 「suffix は1文字で、補完に追加される」と記述されていました。ですので、複数の文字(':0.0' のように)を suffix として、補完することはできないようです。 シェル変数を設定するときに、 set hosts=(firsthost:0.0 secondhost:0.0 thirdhost:0.0) としておいたらどうでしょうか? ちなみに私は、alias で以下のように設定していました。 alias dp1 'setenv DISPLAY firsthost:0.0' alias dp2 'setenv DISPLAY secondhost:0.0' alias dp3 'setenv DISPLAY thirdhost:0.0' こっちほうが便利だと私は思ったので。補完機能も、勝手に入りますしね。 (今は、REMOTEHOST が取ってこれるので、自動設定しています。)
その他の回答 (1)
- hazenoki
- ベストアンサー率33% (21/62)
遅くなりましたが、、、。 rlogin や ftp のための host の list と DISPLAY 用の host の list は微妙にずれませんか? 敢えて、別のリストを使った方が便利かもしれませんね。もちろん、リストが増えると管理が大変になりますので、どちらが得なのかは状況次第ですね。 正直言いまして、rlogin にはそんなに詳しくないので、(というか、最近は使っていないので)環境変数の件はよく知りません。昔は、多段にログインしたときには、expect というオートパイロットできるスクリプトで、強引に渡そうとしたことがあります。しかし、今考えると、やりすぎだと思います。スマートではないです。 現在の私の状況は、teraterm (TTSSH) でウインドウズから unix にログインしています。 teraterm は REMOTEHOST を設定してくれているようで、それを利用しています。 また、その UNIX から、他の remote site にログインするときも、最近は、すべて、ssh を使います。 ssh は DISPLAY を設定してくれますので、何も考えなくもよく、便利に使っています。ssh は安全性を高めるために、ちょっとトリッキーな方法で DISPLAY を設定しています。そのため、多段にログインしても問題ありません。 安全性の観点からも、ssh はお勧めです。remote site にもインストールする必要はありますけどね。 以上、とりとめもなく文章を書いたので、まとめてみます。 ・できれば、ssh を使う。 → 多段のログインでも DISPLAY は自動で設定される。 → リモートサイトにもインストールする必要がある。 → 安全性が高まる。 ・どうしても rlogin を使わないといけないの場合。 → alias の方法が、日々のタイプする量が減ると思います。 → foreach で設定すると、リストが一元化できる。 → 別々のリストの方が、余分なホスト名が complete 機能時に候補に上がらず便利。 こんな感じでしょうか。参考にしてください。
お礼
hazenokiさん、たびたびお呼び出ししてすいませんでした。 御礼が遅くなって申し訳ありません。 ssh よさそうですね。管理者にお願いしてみます。 結局、host のリストを作って foreach で alias を作るようにしました。 何度もご回答ありがとうございました。
お礼
hazenoki さん、ご回答ありがとうございます。 シェル変数のほうに :0.0 をつけるのっていい考えですね。 alias でも便利なんですが、rlogin や ftp のときと 一緒のリストが使えると便利だなぁとおもったので、 complete にこだわってました。 今気づいたことなんですが、 foreach を使えば alias でも、ディスプレイ用の変数でも 簡単に作れますね。 どうせ一回しか読まれないので多少時間がかかっても構わないし。 あと、追加質問なんですが、REMOTEHOST って多段に rlogin しているときは どうやってとってきてるんですか? rlogin するときに、環境変数がわたせるのかなぁ と漠然と思っているのですが、方法がよくわかりません。 お願いします。