基于三个问题:
- 在 ZSH 中使用不同的配置文件(在不同的终端应用程序中),但仅针对 macOS 设计
- 不同会话的不同 tmux 配置?,但我想为不同的终端应用程序使用不同的.zshrc文件(Deepin Terminal、Tilix和VSCode的集成终端)
- 具有 .bashrc 环境的 .desktop 文件,但没有成功。
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=tilix
或TERM_SUBTYPE=deepin
或TERM_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
*)
如果父进程不是可识别的情况之一,则该行是后备。如果在这种情况下您无事可做,则可以将其省略。