배경
virtualenv
저는 환경 "1.0"과 "2.0" 사이를 전환하는 데 익숙합니다 . 관리단말기를
사용하고 있습니다 . 어떤 환경에서 작업할 때 모든 새 창이 해당 환경에서 시작되기를 원합니다 .screen
screen
질문
screen
Bash 에 새 셸 인스턴스에 환경 변수를 설정하도록 지시할 수 있으므로 다음과 같은 별칭을 만들 수 있습니다.
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'