web-dev-qa-db-ja.com

ZSHでさまざまなプロファイルを使用する(さまざまなターミナルアプリで)

MacOSのさまざまなターミナルアプリでさまざまなZSHプロファイルを使用したいと思います。たとえば、iTermでプロンプト構成Aのプロファイルを使用し、Terminal.appでエイリアスのセットが異なるプロファイルを使用し、IDEの統合ターミナル内でいくつかの起動スクリプトで別のプロファイルを使用します( VSコード、IntelliJなど)。

ターミナルアプリを使用すると、ユーザーは「シェルを開く」コマンドを指定できます。たとえば、私の場合、デフォルトは/bin/zshです。さまざまなターミナルアプリ用に正しい構成でさまざまな「.zshrc」ファイルを設定しています。たとえば、「vscode.zshrc」、「iterm.zshrc」、「intellij.zshrc」、「bestconfigever.zshrc」などです。

どうすればこれを達成できますか?

1
SGMoore

ps -o comm= -p $PPID(親プロセスのコマンド名を取得)を使用して、どのプログラムがzshを呼び出したかを確認できます。

TERM環境変数を確認することもできますが、多くのターミナルエミュレーターは、xtermとほとんど互換性があるため、xtermに設定するだけです。 IDE統合端末がTERMをどのように設定するかは、端末の機能の程度によって異なります。たとえば、EmacsはTERM=dumb(Emacsがエディション機能の制御を維持する単純なコマンドライン)ではM-x Shellを使用しますが、TERM=eterm-color(本格的なターミナルエミュレーター)ではM-x termを使用します。

一部のアプリケーションは、環境変数を設定します。たとえば、 muruが示すように ItermはITERM_PROFILEを設定します。シェルから別のターミナルエミュレータを起動すると、2番目のエミュレータのシェルが最初のエミュレータの変数を継承することに注意してください。したがって、親プロセスがItermであることを確認した後でのみ、$ITERM_PROFILEを設定することをお勧めします。

代替または補完的なアプローチは、呼び出し側プログラムに作業を行わせることです。 Zshは、ディレクトリ$ZDOTDIRから構成ファイルを読み取り、ZDOTDIRが設定されていない場合は、ホームディレクトリにフォールバックします。あなたは例えばをロードすることができます$HOME/.zshrc別のディレクトリの.zshrcから、いくつかの変更を加えてデフォルト設定を適用する場合。