가상 콘솔이나 xterm에 있을 때 내 스크립트는 어떻게 알 수 있나요?

가상 콘솔이나 xterm에 있을 때 내 스크립트는 어떻게 알 수 있나요?

내 스크립트 중 일부(키맵 변경, 공개 키 추가)는 가상 콘솔과 xterm에서 다르게 작동해야 합니다. 진짜 코드가 뭐야?

#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi

답변1

대화형 쉘과 비대화형 쉘을 구별하려면 test내장 지원을 사용하여 이를 감지하십시오(ksh에 있는지는 확실하지 않지만 coreutils의 바이너리도 지원함).

test -t 0 # will return 0 for interactive shells

tty/pty/pts 또는 다른 항목에 있는지 정말로 알고 싶다면 다음 출력을 구문 분석하세요 tty.

$ tty # konsole
/dev/pts/4
$ tty # virtual terminal
/dev/tty2

답변2

이는 운영 체제에 따라 다릅니다. Linux의 경우 다음을 수행할 수 있습니다.

#!/bin/ksh

if [ "$TERM" == "linux" ]; then
  echo "I'm in a virtual console"
else
  echo "I'm not in a virtual console"
fi

물론 이는 TERM가상 콘솔에 로그인할 때만 자동으로 설정되는 환경 변수를 직접 변경하지 않았다고 가정합니다 linux(Ubuntu에서는 콘솔 애플리케이션에서 으로 설정되지만 xterm운영 체제에 따라 다를 수 있음). . 사용 중인 다양한 응용 프로그램에서 TERM 내용을 확인하고 적절하게 설정하세요.

답변3

연결할 X 서버가 있는지 확인하고 싶은 것 같습니다.

그것은 다음과 같습니다:

if [ -n "$DISPLAY" ]; then
  : X
else
  : no X
fi

관련 정보