Environment-Variables

如何從 bash 設置“screen”環境變數?

  • September 24, 2014

背景

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'

引用自:https://unix.stackexchange.com/questions/157202