Shell
我的腳本如何知道我是在虛擬控制台還是在 xterm 中?
在虛擬控制台和 xterm 中,我的一些腳本(更改鍵盤映射、添加公鑰)需要採取不同的行動。什麼是真正的程式碼
#!/bin/ksh if [[ in_a_virtual_console ]]; then ... else ... fi
如果您打算區分互動式外殼和非互動式外殼,請使用
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
在控制台應用程序中設置為,但這可能因作業系統而異)。檢查您正在使用的各種應用程序中的 TERM 內容,並根據需要進行設置。