Linux
在 Linux 上,為不同的應用程序獲取不同的 .zshrc 文件
基於三個問題:
- 對 ZSH 使用不同的配置文件(在不同的終端應用程序中),但僅針對 macOS 設計
- 不同會話的不同 tmux 配置?,但我想為不同的終端應用程序(Deepin Terminal、Tilix 和 VSCode 的集成終端)使用不同的 .zshrc 文件
- .desktop 文件與 .bashrc 環境,但不成功。
tl:dr – 例如:
.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
- 以及 Deepin Terminal 和 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
,但我不確定它是否會起作用。
從航站樓一側
在每個終端或終端啟動器的配置中,安排設置環境變數,例如
TERM_SUBTYPE=tilix
orTERM_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
*)
如果父程序不是已辨識的情況之一,則該行是一個備份。如果您在這種情況下無事可做,可以將其忽略。