zshシェルのどの設定を使って、私がx-serverにあるのか、コンソールにいるのかを確認できますか?ターミナルエミュレータにいるときとtty /コンソールにいるたびに.zshrcで異なる設定を持つことができる方法を見つけようとしています。
基本的に私はそうしたでしょう。
(医師コード)
if(current shell session is in console)
[
implement PROMPT x
]else[
implement PROMPT Y
]
答え1
現在、ttyの名前がローカルコンソールと同じであることを確認する方が簡単になると思います。
case $(tty) in
(/dev/tty[1-9]) PS1='console version';;
(*) PS1='not console version';;
esac
これは結果を確認する唯一の方法です。 grepまたはパラメータ拡張を使用できますが、これはアイデアを示しています。
確認することはできますが、保証され$DISPLAY
ておらず、X11環境が必要なシェルプロンプトで何をするか想像できません。
答え2
@Ignacio Vazquez-Abramsと@Jeff Schaller(そして以下の他のコメント作成者)のおかげで、$ DISPLAYが必要な環境変数であることに気づきました。ディスプレイサーバーにある場合、$ DISPLAYが保持する値は0(何か)を返します。したがって、次のコードは機能するはずです。
if [[ -n $DISPLAY ]];
then
PROMPT = (etc)
else
PROMPT = (etc2)
fi
みんなありがとうございます。
答え3
コンソールで作業するときは、まずログインしてください。
したがって、ログイン情報を検索すると、現在地を知ることができます。
次のことを試すことができます。
[ "$(ps -t $(ps -o comm= -o tty= | \
awk '$1=="ps"{print $2}') | \
grep [l]ogin)" ] && \
echo "console" || echo "terminal"