MacOSのさまざまなターミナルアプリでさまざまなZSHプロファイルを使用したいと思います。たとえば、iTermでプロンプト構成Aのプロファイルを使用し、Terminal.appでエイリアスのセットが異なるプロファイルを使用し、IDEの統合ターミナル内でいくつかの起動スクリプトで別のプロファイルを使用します( VSコード、IntelliJなど)。
ターミナルアプリを使用すると、ユーザーは「シェルを開く」コマンドを指定できます。たとえば、私の場合、デフォルトは/bin/zsh
です。さまざまなターミナルアプリ用に正しい構成でさまざまな「.zshrc」ファイルを設定しています。たとえば、「vscode.zshrc」、「iterm.zshrc」、「intellij.zshrc」、「bestconfigever.zshrc」などです。
どうすればこれを達成できますか?
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
から、いくつかの変更を加えてデフォルト設定を適用する場合。