Bashで「screen」環境変数をどのように設定しますか?

Bashで「screen」環境変数をどのように設定しますか?

背景

virtualenv私は環境「1.0」と「2.0」の切り替えに慣れています。管理端末を
使用しています。ある環境で作業するときは、すべての新しいウィンドウがその環境で起動したいと思います。screen
screen

質問

screenBashに新しいシェルインスタンスに環境変数を設定するように指示できるので、次のエイリアスを作成できます。

alias one='export PRJCT=1.0; screen-magic-setenv PRJCT=1.0; workon 1.0'
alias two='export PRJCT=2.0; screen-magic-setenv PRJCT=2.0; workon 2.0'

~/.bashrcその後、通話中:

[[ -z $PRJCT ]] || workon $PRJCT # switch to project if set

次のように、新しいシェルに環境変数を設定するようにコマンドを発行できることはわかっていますが、screenエイリアスでは機能しないため役に立ちません。

:setenv PRJCT
2.0

答え1

私が正しく理解した場合、問題はシェルエイリアスを使用して画面と直接対話する方法が見つからないことです。代わりに、次の-Xコマンドを使用して実行画面にコマンドを送信できます。setenv

$ screen -list
There are screens on:
    25216.pts-45.antiriad      (Attached)

$ screen -S 25216 -X setenv PRJCT 2.0

その後、対応する変数が設定され、その時点からサブシェルから継承されます。適切に設定された別のセッション名を:setenv使用すると、-S操作が簡単になる可能性があります。この変数はSTY現在の画面セッションを保持します。

screen -X setenv PRJCT 2.0 screenセッションでのみ実行している場合は、それを省略すると-Sそのscreenインスタンスに適用されます。

alias one='export PRJCT=1.0; screen -X setenv PRJCT 1.0; workon 1.0'

関連情報