我希望在 macOS 上将不同的 ZSH 配置文件与不同的终端应用程序一起使用。例如,在 iTerm 中使用具有某些提示配置 A 的配置文件,在 Terminal.app 中使用具有不同别名集的配置文件,并在 IDE 中的集成终端(VS Code、IntelliJ 等)内使用具有一些启动脚本的另一个配置文件。
终端应用程序允许用户指定“shells open with”命令。例如,/bin/zsh
我的情况就是默认的。我有不同的“.zshrc”文件设置,并为不同的终端应用程序提供了正确的配置。例如,“vscode.zshrc”、“iterm.zshrc”、“intellij.zshrc”和“bestconfigever.zshrc”。
我该如何实现这一目标?
答案1
您可以使用ps -o comm= -p $PPID
(获取父进程的命令名称)来查看哪个程序调用了zsh。
您还可以检查TERM
环境变量,但很多终端仿真器只是将其设置为,xterm
因为它们大多与 xterm 兼容。 IDE 集成终端的设置TERM
取决于其终端的功能。例如,Emacs 使用TERM=dumb
in M-x shell
(简单的命令行,其中 Emacs 保持对版本功能的控制),但TERM=eterm-color
使用 in M-x term
(成熟的终端仿真器)。
一些应用程序设置环境变量,例如正如 muru 所指出的项集ITERM_PROFILE
。请注意,如果您从 shell 启动不同的终端模拟器,则第二个模拟器中的 shell 会继承第一个模拟器中的变量。因此,您可能只想$ITERM_PROFILE
在检查父进程是 Iterm 后进行设置。
另一种或补充的方法是让调用程序完成工作。 Zsh 从目录中读取其配置文件,如果未设置,$ZDOTDIR
则返回到您的主目录。如果您想应用默认设置并进行一些修改,您可以从不同的目录中ZDOTDIR
加载。$HOME/.zshrc
.zshrc