화면 - 현재 창의 컨텍스트를 상속합니다.

화면 - 현재 창의 컨텍스트를 상속합니다.

GNU 화면에서 현재 창의 쉘 환경을 상속받는 쉘이 있는 새 창을 어떻게 생성합니까?

일반적인 Ctrl+는 A C이 작업을 수행하지 않는 것 같습니다.

답변1

한 화면(예: bash 실행)에서 환경 변수를 설정한 다음 새 화면을 열면 이는 별도의 bash 프로세스이므로 이미 실행 중인 별도의 bash 셸에서 환경을 선택하지 않습니다. 이 문제에 대한 빠른 해결책은 다음과 같습니다.

env TERMCAP= env | sed -r 's/^(\w+)=(.*)$/\1="\2"/' > env.sh

그런 다음 Ctrlac새 쉘을 얻어야하면 그냥 할 수 있습니다

source env.sh

env TERMCAP= envTERMCAP 환경 변수가 여러 줄이고 상황을 더 복잡하게 만들기 때문에 이것을 사용하고 있습니다 sed. 예쁘지는 않지만 작동합니다 :)

다음을 수행하도록 변경할 수 있습니다.

env TERMCAP= env | sed -r 's/^(\w+)=(.*)$/export \1="\2"/' > env.sh

따라서 변수도 내보내집니다.

답변2

표시된 대로 내보낸 변수 env는 새 screen.

그러나 시작 전에 셸에 정의되었지만 screen아직 내보내지지 않은 로컬 변수는 screen 세션에 존재하지 않습니다.

변수 이름을 어떻게 지정했는지에 따라 Bash에서 다음과 같은 것을 사용하여 읽을 수 있는 목록을 얻을 수 있습니다.

(set -o posix ; set) | egrep -v '^(_.*|[A-Z0-9_]+)='

set또한 자체적으로 수많은 기능을 나열합니다.

(set -o posix ; set)변수만 나열되지만 목록에는 시스템 변수가 많이 있습니다.

egrep -v '^(_.*|[A-Z0-9_]+)='이름이 밑줄로 시작하는 모든 변수와 대문자, 숫자, 밑줄만 포함하는 모든 변수를 필터링합니다. 이렇게 하면 대부분의 시스템 변수가 제거됩니다.

따라서 목록은 소문자(밑줄 및 숫자 포함)도(또는 단지) ​​사용하는 변수로 제한됩니다. 이제 시작 화면 이전에 해당 목록에서 원하는 항목을 복사하여 붙여넣을 수 있습니다.

물론 이는 내보내는 것을 잊은 변수가 많은 경우에만 도움이 되지만 화면을 시작하기 전에 변수를 확인하는 것을 확실히 기억하세요...

관련 정보