가상 콘솔과 xterm에있을 때 스크립트가 어떻게 알 수 있습니까?


11

내 스크립트 중 일부 (키맵 변경, 공개 키 추가)는 가상 콘솔과 xterm에서 다르게 작동해야합니다. 에 대한 실제 코드는 무엇입니까

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

답변:


6

연결할 X 서버가 있는지 여부를 확인하려는 것처럼 들립니다.

다음과 같은 것 :

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

1
나는 stackexchange에 대해 세 가지 완벽한 답변을 한 적이 없었습니다.
John Baber-Lucero

9

비 대화식 쉘과 인터랙티브 한 쉘을 구별하려면, 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

나는 stackexchange에 대해 세 가지 완벽한 답변을 한 적이 없었습니다.
John Baber-Lucero

7

운영 체제에 따라 다릅니다. 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에서는 콘솔 응용 프로그램에서 설정 되지만 OS마다 다를 수 있음). 사용중인 다양한 응용 프로그램에서 TERM의 내용을 확인하고 적절하게 설정하십시오.


나는 stackexchange에 대해 세 가지 완벽한 답변을 한 적이 없었습니다.
John Baber-Lucero
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.