Environment-Variables
如何從 bash 設置“screen”環境變數?
背景
我
virtualenv
用來在環境“1.0”和“2.0”之間切換。我
screen
用來管理終端。當我在一個環境中工作時,我希望所有新
screen
視窗都從這個環境開始。問題
可以 bash 指示
screen
在新的 shell 實例上設置環境變數,所以我可以創建一個類似於這個的別名: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
在新的 shell 上設置環境變數,如下所示,但它沒有幫助,因為它不能在別名中工作::setenv PRJCT 2.0
如果我理解正確,您的問題是您找不到使用 shell 別名直接與螢幕互動的方法。相反,您可以使用 將命令發送到正在執行的螢幕,當然
-X
包括:setenv
$ screen -list There are screens on: 25216.pts-45.antiriad (Attached) $ screen -S 25216 -X setenv PRJCT 2.0
然後設置變數,並且從那時起將由子 shell 繼承,與
:setenv
. 如果您使用-S
設置合理的不同會話名稱,您的任務可能會更容易。該變數STY
保存目前螢幕會話。如果您只
screen -X setenv PRJCT 2.0
在螢幕會話中執行,省略-S
,它將應用於該螢幕實例。alias one='export PRJCT=1.0; screen -X setenv PRJCT 1.0; workon 1.0'