Zshシェルのどの環境設定で、Xサーバーを使用しているか、コンソールを使用しているかを確認できますか?ターミナルエミュレーターにいるときとtty/consoleにいるときはいつでも、.zshrcに異なる設定を実装する方法を見つけようとしています。
基本的に私は持っているでしょう、
(擬似コード)
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
これは、結果を確認する1つの方法にすぎません。 grepまたはパラメーター展開を使用できますが、それはその考えを示しています。
さらに$DISPLAY
をチェックすることもできますが、それは保証ではなく、X11環境を必要とするシェルプロンプトで何をするか想像できません。
@ IgnacioVazquez-Abramsと@JeffSchaller(および以下の他のコメント提供者)のおかげで、$ DISPLAYが必要な環境変数であることに気付きました。ディスプレイサーバーを使用している場合、$ DISPLAYが保持する値 0になります (何かとして)返されます。したがって、次のコードは機能します(すべきですか?)-
if [[ -n $DISPLAY ]];
then
Prompt = (etc)
else
Prompt = (etc2)
fi
ありがとうございます。
コンソールで作業するときは、最初にログインします。
したがって、ログインを探すと、自分がどこにいるかを知ることができます。
あなたはこれを試すことができます:
[ "$(ps -t $(ps -o comm= -o tty= | \
awk '$1=="ps"{print $2}') | \
grep [l]ogin)" ] && \
echo "console" || echo "terminal"