终端有条件 ZSH_THEME
Conditional ZSH_THEME by terminal
我正在尝试在调用 .zshrc 时根据我使用的终端模拟器选择特定主题 运行。为此,我想出了:
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 主题一起工作得很好,但仅此而已,它似乎不符合条件,我不不知道我的赌注在哪里 =/
我使用的每个终端仿真器中变量 current_terminal 的输出是:
蒂利克斯:
/usr/bin/tilix --gapplication-service
默认终端:
/usr/lib/gnome-terminal/gnome-terminal-server
所以它让事情变得正确,但出于某种原因设置始终是第一个选项
由于两个原因,这不起作用:
您正在使用 [ ... ]
而不是 [[ ... ]]
进行检查。区别在于 [[ ... ]]
是 ZSH 语法的一部分,而 [
(又名 test
)是试图模拟外部 test
程序的内置命令。这很重要,因为 [
不支持 =~
运算符,它仅在 [[ ... ]]
.
中可用
=~
(与任何其他运算符一样)需要用空格包围。作为 Unix shell ZSH 在空格上标记命令。在这种情况下,我猜测 ZSH 只检查 $current_terminal=~'tilix'
是否计算为非空字符串,而不是将 $current_terminal
与 'tilix'
进行比较。情况总是如此,因此您总是获得 powerlevel9k 主题。
所以条件应该是这样的:
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)"
我正在尝试在调用 .zshrc 时根据我使用的终端模拟器选择特定主题 运行。为此,我想出了:
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 主题一起工作得很好,但仅此而已,它似乎不符合条件,我不不知道我的赌注在哪里 =/
我使用的每个终端仿真器中变量 current_terminal 的输出是:
蒂利克斯:
/usr/bin/tilix --gapplication-service
默认终端:
/usr/lib/gnome-terminal/gnome-terminal-server
所以它让事情变得正确,但出于某种原因设置始终是第一个选项
由于两个原因,这不起作用:
您正在使用
[ ... ]
而不是[[ ... ]]
进行检查。区别在于[[ ... ]]
是 ZSH 语法的一部分,而[
(又名test
)是试图模拟外部test
程序的内置命令。这很重要,因为[
不支持=~
运算符,它仅在[[ ... ]]
. 中可用
=~
(与任何其他运算符一样)需要用空格包围。作为 Unix shell ZSH 在空格上标记命令。在这种情况下,我猜测 ZSH 只检查$current_terminal=~'tilix'
是否计算为非空字符串,而不是将$current_terminal
与'tilix'
进行比较。情况总是如此,因此您总是获得 powerlevel9k 主题。
所以条件应该是这样的:
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)"