私は最近ジャンプしてzsh
使用していますオマイZsh!トピックblinks
。 OSX端末では本当によさそうですが、Android Studio端末では不都合に見えます。
だから私の質問はこのセッションがOSX端末の代わりにAndroid Studioで開かれていることを確認し、zsh
それに応じてテーマを変更する方法はありますか?
答え1
誰もあなたに答えることができないので、まったく異なるソフトウェアを持っているにもかかわらず、まだ試しています。これを行う方法の一般的な答えは次のとおりです。どのソフトウェア。私は2つの方法を考えました。
1.さまざまな環境
端末を開き、を実行しますenv > env.terminal
。 Android Studioを開き、実行しますenv > env.studio
。これで、2つの端末のいずれかで実行できるようになりますdiff -dby --suppress-common-lines env.terminal env.studio
(Mac OS X diffに対応するオプションがある場合、-U1
正しく動作しない場合)。
たとえば、私のLinuxコンピュータとLinuxコンピュータのxterm
違いは次のとおりですkonsole
(注:ページに合わせて間隔を変更してください)。
> PROFILEHOME=
> SHELL_SESSION_ID=1e8d5ab2d16641668485f991a1beffe3
> QSG_RENDER_LOOP=
> COLORTERM=truecolor
XTERM_SHELL=/bin/bash <
> KONSOLE_DBUS_SESSION=/Sessions/1
XTERM_VERSION=XTerm(327) | KONSOLE_DBUS_WINDOW=/Windows/1
TERM=xterm <
> TERM=xterm-256color
> KONSOLE_DBUS_SERVICE=:1.1514
> QMLSCENE_DEVICE=
> KONSOLE_PROFILE_NAME=Default
> COLORFGBG=15;0
WINDOWID=83886094 | WINDOWID=115343366
XAUTHORITY=/tmp/xauth-1000-_0 | XAUTHORITY=/home/anthony/.Xauthority
KDED_STARTED_BY_KDEINIT=1 <
XTERM_LOCALE=en_US.UTF-8 <
これらのいくつかは、2つの異なる端末を起動したときに発生するノイズのようです。しかし、他の人はそうではありません。 XTermで何かが欲しいなら、それはif [ -n "$XTERM_VERSION" ]
良いアプローチのようです。繰り返しますが、これはKonsole(そしておそらく他のいくつかの製品)にとって$KONSOLE_PROFILE_NAME
良い選択です。
2. 親プロセスが異なります。
シェルは独自のプロセスIDを知っており、$$
POSIXは$PPID
親PIDを直接取得する必要があるため、zshにもこのIDがあると考えられます。そうでない場合は、次のps
アドレスから入手できますppid=$(ps -o ppid= $$)
。その後、コマンドを実行するか、psを使用できます。
xterm:~$ ps -o args= $PPID
/usr/bin/xterm
konsole:~$ ps -o args= $PPID
/usr/bin/konsole
(-o comm=
これを試してみることもできます)。
シェルスクリプトでは:
ppid=$(ps -o ppid= $$) # if you don't have PPID for some reason
if [ "$(ps -o args= $ppid)" = "/usr/bin/xterm" ]; then
echo "do xterm stuff"
fi
プロセスツリーについてさらに詳しく知りたい場合は、ps
親の親のインポートなどを使用できます。