![화면 - 현재 창의 컨텍스트를 상속합니다.](https://linux55.com/image/46256/%ED%99%94%EB%A9%B4%20-%20%ED%98%84%EC%9E%AC%20%EC%B0%BD%EC%9D%98%20%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8%EB%A5%BC%20%EC%83%81%EC%86%8D%ED%95%A9%EB%8B%88%EB%8B%A4..png)
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= env
TERMCAP 환경 변수가 여러 줄이고 상황을 더 복잡하게 만들기 때문에 이것을 사용하고 있습니다 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_]+)='
이름이 밑줄로 시작하는 모든 변수와 대문자, 숫자, 밑줄만 포함하는 모든 변수를 필터링합니다. 이렇게 하면 대부분의 시스템 변수가 제거됩니다.
따라서 목록은 소문자(밑줄 및 숫자 포함)도(또는 단지) 사용하는 변수로 제한됩니다. 이제 시작 화면 이전에 해당 목록에서 원하는 항목을 복사하여 붙여넣을 수 있습니다.
물론 이는 내보내는 것을 잊은 변수가 많은 경우에만 도움이 되지만 화면을 시작하기 전에 변수를 확인하는 것을 확실히 기억하세요...