Shell
如何檢查目前的 shell 會話是在 gui 還是 tty
zsh shell 中的哪個環境設置可以讓我找到我是在 x-server 中還是在控制台中?我正在嘗試找到一種方法來實現在我的 .zshrc 中設置不同的設置,無論何時我在我的終端模擬器中以及每當我在我的 tty/控制台中。
基本上我會有,
(虛擬碼)
if(current shell session is in console) [ implement PROMPT x ]else[ implement PROMPT Y ]
我認為檢查目前 tty 是否像本地控制台一樣命名會更直接:
case $(tty) in (/dev/tty[1-9]) PS1='console version';; (*) PS1='not console version';; esac
這只是檢查結果的一種方法;您可以使用 grep 或參數擴展,但它顯示了這個想法。
您還可以檢查
$DISPLAY
,但這不是保證,我無法想像您會在需要 X11 環境的 shell 提示符下做什麼。
感謝@Ignacio Vazquez-Abrams 和@Jeff Schaller(以及下面的其他評論者),我意識到 $ DISPLAY was the enviormental variable I needed. If you are in a display server the value held by $ DISPLAY
將為 0將被返回(作為某事)。因此,以下程式碼(應該?)有效 -if [[ -n $DISPLAY ]]; then PROMPT = (etc) else PROMPT = (etc2) fi
謝謝大家。