人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

CentOSで、ログイン時にシェルプログラムで処理を実行しています。

ただ、SFTP経由の場合も処理されてしまう為、
TeraTerm経由等の場合に限定したいのですが、
判断方法はないものでしょうか。

「$TERM」だけでは、ターミナルソフトや設定により内容が変わってくる為、
それ以外の値又は何らかの方法で判断できればと考えております。

●質問者: Auxo
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●100ポイント ベストアンサー

ログインシェルに、何を選んでいるかによります。

もし、bash がログインシェルなら、.bashrc を以下のように。

環境変数の設定など、必ずやりたい処理。

[ -z "$PS1" ] && return

telnet でのログインなど、対話的な処理だけで、実行したい処理。

もし、tcsh がログインシェルなら、.tcshrc を以下のように。

環境変数の設定など、必ずやりたい処理。

if ($?prompt == 0) exit

telnet でのログインなど、対話的な処理だけで、実行したい処理。

どちらも、対話的な処理で呼ばれているかどうかの判定をして、
対話的な処理で呼ばれているのでなければ、途中で処理を抜ける、という感じ。
bash と tcsh に限らず、sh & csh 系なら、こんな感じでいけるはずです。


Auxoさんのコメント
上記の方法でも試したのですが、 FileZilla等を利用して、SFTP経由でつないだ場合は、 上記の判断であっても対話的な処理の部分まで実行されます。 一番最初に試したのですが上手くいきませんでした。 ちなみにbashで/etc/ssh/sshrcに記載して試しました。

Auxoさんのコメント
すみません。 今初めて気づいたのですが、 「.bashrc」と「/etc/ssh/sshrc」では挙動が異なるのですね。 大変失礼いたしました。

a-kuma3さんのコメント
んー、どうなるかな。ドキドキ

Auxoさんのコメント
お教えいただいた方法でうまくいきました! 本当にありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ