내 스크립트 중 일부(키맵 변경, 공개 키 추가)는 가상 콘솔과 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