답변:
비 대화식 쉘과 인터랙티브 한 쉘을 구별하려면, 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
운영 체제에 따라 다릅니다. 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의 내용을 확인하고 적절하게 설정하십시오.