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'

관련 정보