如何从 bash 设置“screen”环境变量?

如何从 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

答案1

如果我理解正确,您的问题是您无法找到使用 shell 别名直接与屏幕交互的方法。相反,您可以使用 向运行屏幕发送命令-Xsetenv当然包括,例如:

$ 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'

相关内容