我的zsh配置中有这个功能:
local kube_prompt()
{
kubectl_current_context=$(kubectl config current-context)
kubectl_cluster=$(echo $kubectl_current_context | cut -d '_' -f 4)
kubectl_prompt="⎈ ($kubectl_cluster)"
echo $kubectl_prompt
}
我这样称呼它:
%{$fg[white]%}$(kube_prompt) \
${git_info} \
它工作得很好(我在shell提示符下有输出)但我的问题是,
我希望在每个shell行启动此命令(例如,当我按ENTER时),而不仅仅是在我打开一个新shell时。
任何想法如何实现?
谢谢!
答案 0 :(得分:2)
您可以通过在其周围添加单引号来为评估函数添加延迟。
即。您的PROMPT
应该与PROMPT='%{$fg[white]%}$(kube_prompt) ${git_info}'
这将延迟变量的更新时间,以便捕获您运行的命令的效果。
这就是我在.zshrc
中配置它的方式:
kube_prompt()
{
kubectl_current_context=$(kubectl config current-context)
kubectl_prompt="( \u2388 $kubectl_current_context )"
echo $kubectl_prompt
}
RPROMPT='%F{81}$(kube_prompt)'
这就是它的样子:
$ kubectl config use-context chip24 ( ⎈ minikube )
Switched to context "chip24".
$ kubectl config use-context hasura ( ⎈ chip24 )
Switched to context "hasura".
$ ( ⎈ hasura )
unicode角色⎈为它添加了一个漂亮的k8s徽标效果。 :)