Terminal 按终端的条件ZSH_主题

Terminal 按终端的条件ZSH_主题,terminal,zsh,oh-my-zsh,zshrc,terminal-emulator,Terminal,Zsh,Oh My Zsh,Zshrc,Terminal Emulator,我试图在.zshrc被调用时,根据我运行的终端amulator选择一个特定的主题。为此,我想到: current_terminal="$(ps -p$PPID -o cmd=)" function choose_theme { if [ $current_terminal=~'tilix' ]; then echo 'powerlevel9k/powerlevel9k'; else echo 'robbyrussell'; fi

我试图在.zshrc被调用时,根据我运行的终端amulator选择一个特定的主题。为此,我想到:

current_terminal="$(ps -p$PPID -o cmd=)"

function choose_theme {
        if [ $current_terminal=~'tilix' ];
        then echo 'powerlevel9k/powerlevel9k';
        else echo 'robbyrussell';
        fi
}

ZSH_THEME="$(choose_theme)"
我在运行时没有收到任何错误消息,当我在tilix上打开它时,它与powerlevel9k主题配合得很好,但只是,它似乎不尊重条件,我不知道我的mstake可能在哪里=/

我正在使用的每个终端仿真器中的可变电流_终端的输出为:

Tilix:

/usr/bin/tilix --gapplication-service
默认终端:

/usr/lib/gnome-terminal/gnome-terminal-server

因此,它得到了一些好处,但由于某些原因,设置始终是第一个选项。由于两个原因,这不起作用:

  • 您正在使用
    […]
    而不是
    […]]
    进行检查。区别在于
    […]
    是ZSH语法的一部分,
    [
    (又称
    test
    )是一个试图模拟外部
    test
    程序的内置命令。这很重要,因为
    [
    不支持
    =
    操作符,它只在
    […]
    内部可用

  • =~
    (与任何其他操作符一样)需要用空格包围。由于Unix shell ZSH在空格上标记命令。在本例中,ZSH我猜ZSH只检查
    $current\u terminal=~'tilix'
    的计算结果是否为非空字符串,而不是将
    $current\u terminal
    'tilix'
    进行比较。情况总是这样,因此您总是这样让我们来看看powerlevel9k主题

  • 所以情况应该是这样的:

    current_terminal=“$(ps-p$PPID-o cmd=)”
    函数选择主题{
    如果[$current_terminal=~'tilix']];
    然后回应“powerlevel9k/powerlevel9k”;
    还有一种是“robbyrussell”;
    fi
    }
    ZSH_主题=“$(选择_主题)”