전력선 글꼴이 올바르게 표시되어야 하는 우주선 프롬프트 zsh 테마를 설치했습니다. 따라서 DE의 터미널 에뮬레이터 내에서 실행되는 셸이 아니라 tty(내가 아는 한 비트맵 글꼴만 사용할 수 있음)에서 직접 실행되는 셸에서 이를 비활성화하고 싶습니다.
나는 이것을 내 .zshrc에 넣어 보았습니다.
if [[ -o login ]] ; then
return
fi
로그인 셸에서 구성 로드를 비활성화하지만 su를 사용할 때 터미널 에뮬레이터(Konsole)에서 실행하더라도 루트 셸도 로그인으로 표시됩니다.
➜ su
Password:
n750jv# echo $-
569XZilms
관련이 있는지는 모르겠지만 실제로 구성이 동기화 상태를 유지하도록 /root에 있는 .zshrc에 대한 심볼릭 링크를 만들었습니다.
참고: tty에서 echo $-를 실행하면 정확히 동일한 출력이 표시됩니다: 569XZilms
답변1
zsh를 실행하는 터미널에 특정 문자가 올바르게 표시되는지 알고 싶은 것으로 나타났습니다. (그런데 이것은 글꼴 유형과 관련이 없습니다. 문자 인코딩 및 글꼴에 사용하는 문자가 포함되어 있는지 여부와 관련이 있습니다.)
환경 변수를 사용하여 TERM
쉘이 실행 중인 터미널을 확인하십시오. 이는 글꼴 오버레이에 대한 좋은 경험적 방법이 될 수 있습니다.
모든 것을 건너뛰지 마십시오 .zshrc
. 별칭, 완성 등과 같이 쉘이 실행되는 위치에 관계없이 대부분의 설정이 의미가 있습니다. 프롬프트의 내용만 변경됩니다.
case $TERM in
xterm*|konsole*)
set_fancy_prompt;;
*)
set_less_fancy_prompt;;
esac
또는 터미널이 유니코드를 사용하는지 아니면 8비트 인코딩을 사용하는지 여부가 충분히 좋은 경험적 방법일 수 있습니다. 로캘 범주는 LC_CTYPE
좋은 경험적 방법이어야 합니다.
case ${(L)LC_ALL:-${LC_CTYPE:-$LANG}} in
*UTF*)
set_fancy_prompt;;
*)
set_less_fancy_prompt;;
esac
이것은 로그인 쉘인지 여부와는 아무런 관련이 없습니다. 예를 들어 SSH를 통해 로그인하는 경우 로그인 위치에 따라 텍스트 콘솔이나 GUI 터미널 또는 다른 유형의 터미널(또는 터미널 없음)에 나타날 수 있는 로그인 셸이 표시됩니다.
답변2
이를 달성하는 보편적인 방법은 없습니다.
사용중인 전력선 문자개인 사용 영역유니코드. 몇 번이고 전선이 보입니다.대단하다 글꼴”) 사용자는 개인 사용 영역을 이해합니다.의미한다어떤 것들은 모든 곳에서 동일하게 작동하지 않습니다.그 의미는 전적으로 사적인 합의에 의해 결정됩니다..
개인용 지역 코드 포인트를 위해 어떤 글리프를 렌더링할지, 어떤 개인용 배열을 사용하여 렌더링할지 결정하는 표준 방법은 없습니다. 실제로 문자 모양을 보거나 사람이 읽을 수 있는 문서를 읽는 것 외에는 글꼴에 Powerline에서 요구하는 비표준 문자 모양이 있는지 확인할 수 있는 방법이 없습니다.
또한 비표준 독점 Powerline 글리프(예: Tamzen)가 포함된 일부 비트맵 글꼴이 있습니다. 따라서 일반적인 경우 터미널이 커널 가상 터미널인지 여부에 따라 프록시될 수 없습니다. KVT는 비표준 전용 전력선 문자를 표시할 수도 있고 표시하지 않을 수도 있습니다.
또한 쉘이 로그인 쉘인지 여부에 따라 현명하게 프록시될 수도 없습니다. 쉘은 비-로그인 쉘이 될 수 있는 것처럼 쉽게 글꼴에 비표준 독점 Powerline 문자 모양이 있는 터미널 에뮬레이터의 로그인 쉘이 될 수 있습니다(여러 GUI 터미널 에뮬레이터는 로그인 쉘로 쉘을 시작할 수 있습니다). 글꼴에 비표준 개인 Powerline 문자 모양이 없는 터미널 에뮬레이터에서(서브 쉘을 포크+실행하거나 mailx
"쉘 아웃"하는 등의 작업이 가능하기 때문입니다 vi
).
넌 그걸 알아내면 돼나만의 사적인 준비. 터미널 로그인 세션을 표시하는 방법 찾기당신은 (아님) 설치했습니다개인 사용 지역 코드 포인트의 특별한 의미입니다. 이를 달성하기 위한 다양한 방법의 예:
getty
, 또는 KVT 로그인의 로그인 서비스에서 자신이 디자인한 환경 변수를 설정login
한 다음 쉘 초기화 스크립트를 닫습니다(관리자 액세스 권한이 필요하고 나중에 이 설정을 유지해야 하는 경우).- 개인적인 방법으로 터미널 장치 파일 이름을 닫습니다(단, 직렬 연결을 통해 실제 터미널을 가져오거나 SSH를 가져올 때 이 작업이 정말 복잡해집니다).
- ␅(U+0005) 문자를 보내고 반환되는 내용을 끕니다. 단, 이는 항상 터미널에서 사용자가 프로그래밍할 수 있으며 실제로 아무것도 반환되지 않을 수 있습니다.
손을 잡고...
물론 더 나은 방법은 테마에 표준 문자를 사용하고 걱정하지 않는 것입니다.어느이러한 장애물.
개인 사용 구역 코드 포인트가 실제로 필요하지 않습니다.당신의 주제의 저자가 생각하는 것처럼, 잠긴 자물쇠의 경우. U+1F512로 표준화됨(
답변3
문제를 발견했습니다. 별칭을 잊어버렸습니다.수~처럼수-엘나 자신... :D
편집: @Gilles의 제안에 따라 $TERM 환경 변수의 내용을 확인하고 Linux 콘솔이 아닌 경우에만 테마를 로드하도록 구성을 수정했습니다.
if test "$TERM" != "linux"
then
autoload -U promptinit; promptinit
prompt spaceship
fi