쉘 프롬프트(예: 에서 정의한 Bash 프롬프트 ) PS1
에 GNU 화면 세션 이름과 창 제목을 표시하는 방법이 있습니까?
답변1
screen
Screen은 (1) 맨페이지 에서 일부 환경 변수를 제공합니다 .
STY Alternate socket name.
WINDOW Window number of a window (at creation time).
"생성 시"는 창 번호를 다시 지정하면(screen number
명령을 사용하여) 쉘에 변경 사항이 통보되지 않으며 $WINDOW는 여전히 첫 번째 창 번호와 동일하다는 의미입니다.
다음과 같은 것을 사용할 수 있습니다.
PS1='\u@\h(${STY}:${WINDOW}):\w$ '
답변2
나는 항상 정확한 스크린 세션 이름을 사용합니다. 그런 다음 화면의 STY 환경 변수를 PS1에 추가하고 숫자 ID를 제거할 수 있었습니다(dimo414 덕분에). 나는 항상 세션에 있지 않기 때문에 중괄호 등으로 장식하지 않을 것입니다. 간단한 예:
PS1='\u@\h ${STY#[0-9]*.} \w$ '
답변3
나는 이것을 사용합니다 :
(`echo ${STY} | sed -e 's/[0-9]*\.//g'`:${WINDOW}:`screen -Q title`)
${STY}
창 번호 포함("생성 시"에 설명된 대로) 에서 프로세스 번호 제거
창 제목 포함(에서 반환 screen -Q title
)
노트:
- 처음 실행할 때
screen -Q
Enter 키를 기다립니다 . - Ca CA를 사용하여 창 제목을 설정한 다음 .profile을 가져와 프롬프트를 업데이트합니다.
답변4
나는 보통 다음과 같은 명명된 화면을 사용합니다.screen -S vim ## see: screen -h
스크린 세션 이름을 화면에 표시하도록 PS1 프롬프트를 얻으려면(스크린 세션을 일반 터미널 세션과 구별하기 위해) 두 부분으로 구성된 접근 방식을 수행해야 합니다.
- 파일에 힌트를 설정합니다
~/.screenrc
. - 일반 BASH 별칭을 통해 (스크린 세션 내에서) 파일을 가져옵니다
~/.bashrc
.
# -----------------------------------------------------------------------------
# ~/.screenrc ## or whatever you want to name it
PS1='[\u@\h (screen: ${STY#[0-9]*.}) \w]$ '
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# ~/.bashrc
alias ssrc='source ~/.screenrc' ## or whatever you named it (comment above)
# -----------------------------------------------------------------------------
용법:
[me@vps1360 ~]$ screen -S test
# -----------------------------------------------------------------------------
# Named screen session:
[me@vps1360 ~]$ ssrc
[me@vps1360 (screen: test) ~]$ ## PS1 prompt with screen session name
# Ctrl-a d
[detached from 9278.test]
# -----------------------------------------------------------------------------
[me@vps1360 ~]$