【发布时间】:2022-01-14 01:35:26
【问题描述】:
我的 .zshrc 中有这段代码:
autoload -U colors && colors
function change_color() {
if [[ "$?" = 0 ]]; then
return "green"
else
return "red"
fi
}
PS1="%B%{$fg[red]%}[%{$fg[yellow]%}%n%{$fg[green]%}@%{$fg[blue]%}%M %{$fg[magenta]%}%~%{$fg[red]%}]% %{$fg[$changecolor]%}➜%b "
但是,无论我做什么,➜ 字符都会保持白色。
【问题讨论】:
-
您正在使用变量
$changecolor,它永远不会被分配。但即使您将它分配给某个值,PS1也会在定义 PS1 变量时获得该值,并且之后永远不会改变。 -
您可以安装spaceship 或至少查看其源代码以了解如何在那里实现基于状态的提示更改,而不是重新发明轮子。