9

screen を使用して作業セッションを維持し、複数のマシンから同じセッションに接続します。永続的な画面セッション内の XDISPLAY 変数が、現在接続しているマシンに常に設定されるように、SSH と画面を設定するにはどうすればよいですか?

すなわち。職場で screen セッションを開始し、職場のマシンで実行されている X サーバーを使用する gvim を使用します。後で、自宅から同じセッションに接続し、gvim も使用したいと考えています。しかし今回は、自宅のマシンで gvim に X サーバーを使用させたいと考えています。別のマシンから接続するたびに XDISPLAY を手動で更新できることはわかっていますが、自動化されたシステムが必要です。

gvim を実行中に仕事用マシンから自宅用マシンに実際に移動できればボーナス ポイントです。xmoveを試してみましたが、うまくプレイできませんでした。

4

2 に答える 2

5

以下は手動の解決策ですが、エイリアスまたはスクリプトを使用して、リモートでログインしたときに自動的に実行できない理由はありません。

ローカル シェルが DISPLAY 変数を適切に設定すると仮定すると、screen -X接続する前に次のコマンドをリモート画面に送信するために使用できます。

# set future remote shells started by screen to have the correct XDISPLAY
% screen -X "setenv XDISPLAY $DISPLAY" #...

# set up the keystroke F1 to update the XDISPLAY in current shells
% screen -X "bindkey -k k1 stuff export XDISPLAY=$DISPLAY\015" #...

すべてのウィンドウが (実行中のエディターなどではなく) シェルに残っていることがわかっている場合は、キー バインディングではなくを使用:atして変更できます。XDISPLAY

# update the XDISPLAY in all current windows
% screen -X "at % stuff export XDISPLAY=$DISPLAY\015" #...

別の方法として、親プロセスの環境変数値を取得する何らかの方法を知っている場合は、それをシェルのプロンプト フックと一緒に使用して、SCREEN の XDISPLAY の値 (setenv で設定) を取得し、シェル用に更新することができます。

于 2009-03-22T13:08:11.253 に答える
3

外部プロセスの環境変数を変更する「簡単な」方法はありません。

簡単な解決策はXDISPLAY、ログイン時にファイルに保存しPROMPT_COMMAND、次のプロンプトを出力する前に a を使用してこのファイルを読み取ることです。


X アプリケーションの移動については、X11vncまたは などを参照してくださいXvnc

于 2008-10-29T07:31:21.177 に答える