FreeBSD에서 가상 콘솔을 사용할 때 ALT-F<1~n>
"zsh", "sh"(및 기타 쉘) 시작 스크립트가 프롬프트에 가상 콘솔 번호를 포함하기를 원합니다(기본 콘솔 "1"이 아닌 경우).
어떻게 해야 하나요?
답변1
PS1
의 값을 기준으로 조건부로 설정됩니다 $TTY
. 첫 번째 가상 콘솔은 이고 /dev/ttyv0
, 두 번째 가상 콘솔은 입니다 /dev/ttyv1
.
zsh의 경우 로 이동하세요 ~/.zshrc
. bash의 경우 로 이동하세요 ~/.bashrc
.
if [[ $TTY == /dev/ttyv[1-9]* ]]; then
PS1="[${TTY#/dev/ttyv}] $PS1"
fi
이를 수행하는 코드는 bash와 zsh에서 동일합니다. 프롬프트(현재 디렉토리, 호스트 이름, 색상...)에서 더 많은 효과를 원하는 경우 형식은 PS1
쉘에 따라 다릅니다.다루기 힘든그리고세게 때리다둘 다 프롬프트 탈출을 지원하지만 완전히 다릅니다.
답변2
KVT는 직렬, 비디오 또는 무음 콘솔이 아닙니다. FreeBSD의 기본 커널 가상 터미널은 실제로 0이고 장치 파일 이름은 1 /dev/ttyv0
이 아니라 1입니다. 이것은 리눅스가 아닙니다. 그러므로 적어도 실제 넘버링에 익숙해지기 전까지는 무조건 프롬프트에 포함시키는 것을 추천드립니다. ☺
Z 셸에서는 정말 쉽습니다. 내 안에 있어요 RPROMPT
:
RPROMPT=%y
물론 모든 프롬프트 셸 변수는 적절한 대화형 셸 rc 파일(예: )에 설정되어야 하며 .zshrc
내보내서는 안 됩니다.
장치 이름이 아닌 숫자만 원하는 경우에는 백분율 순서가 다릅니다.
RPROMPT=%j
그러나 %j
GUI 터미널 에뮬레이터 또는 사용자 공간 가상 터미널에 연결된 셸에서도 사용하는 경우 Z 셸이 KVT와 동일한 의사 터미널에 대해 동일한 번호를 생성하기 때문에 혼란이 발생할 수 있습니다.
FreeBSD Almquist 쉘에는 PS1
쉘 변수에 넣을 수 있는 프롬프트 순서가 없습니다(그리고 오른쪽 프롬프트도 없습니다). FreeBSD Almquist 쉘에서도 작동하는 것이 필요합니다. Giles의 대답은 메타 문자 시퀀스를 프롬프트하지도 않으며 프롬프트하지도 않습니다.
거기아니요 TTY
KVT 로그인 세션에서 환경 변수를 설정합니다(내 nosh 도구 세트를 사용하지 않는 한,다음에 추가FreeBSD의 터미널 로그인 규칙은 vc-get-tty
해당 프로그램을 통해 구현됩니다. 자일스의 대답오직이는 Z 쉘이 암시적 TTY
쉘 변수를 제공하기 때문에 작동합니다. FreeBSD Almquist 쉘이나 암시적 쉘 변수나 환경 변수가 없는 Korn 쉘과 같이 사용할 수 있는 다른 쉘에서는 작동하지 않습니다.
이를 위해서는 먼저 다음 단계를 수행해야 합니다.
TTY="`tty`" 내보내기