在 Linux 上,为不同的应用程序获取不同的 .zshrc 文件

在 Linux 上,为不同的应用程序获取不同的 .zshrc 文件

基于三个问题:

TL:博士- 例如:

  • .zshrc
if [ -f /usr/bin/tilix ]; then
  if [ -f ~/tilix.zshrc ]; then
    source ~/tilix.zshrc
  fi
elif [ -f /usr/bin/deepin-terminal ]; then
  if [ -f ~/deepin-terminal.zshrc ]; then
    source ~/deepin-terminal.zshrc
  fi
elif [ -f /usr/bin/code-insiders ]; then
  if [ -f ~/code-insiders.zshrc ]; then
    source ~/code-insiders.zshrc
  fi
else
    source ~/tilix.zshrc
fi
  • 以及深度终端和 Tilix 的桌面文件:
Exec=bash -c 'source $HOME/deepin-terminal.zshrc && deepin-terminal'
Exec=bash -c 'source $HOME/tilix.zshrc && tilix'
  • VSCode 的settings.json
{
  "terminal.integrated.shell.linux": "source $HOME/code-insiders.zshrc && /usr/bin/zsh"
}

但没有任何作用。

也许我应该使用devilspie,但我不确定它是否有效。

答案1

从终端侧

在每个终端或终端启动器的配置中,安排设置环境变量,例如TERM_SUBTYPE=tilixTERM_SUBTYPE=deepinTERM_SUBTYPE=vscode。在您的 中.zshrc,检查此变量的值:

case $TERM_SUBTYPE in
  tilix) …;;
  '') …;;
esac

'')线是没有任何设置时的情况TERM_SUBTYPE。如果在这种情况下您无事可做,则可以将其省略。

从壳侧看

终端仿真器通常是 shell 的父进程,因此请检查父进程。

case ${$(ps -p $PPID -o comm=):t} in
  tilix) …;;
  deepin-terminal) …;;
  code-insiders) …;;
  *) …;
esac

*)如果父进程不是可识别的情况之一,则该行是后备。如果在这种情况下您无事可做,则可以将其省略。

相关内容