如何让zsh提示符中的AWS_PROFILE变量随值变化自动更新?
解决zsh提示符中AWS_PROFILE变量不更新的问题
问题原因
你当前用双引号定义的PS1会在设置完成时就把$AWS_PROFILE替换成当时的固定值,后续修改AWS_PROFILE变量不会自动同步到提示符里。
解决方法
方法1:改用单引号定义PS1
单引号会阻止变量的提前展开,zsh每次渲染提示符时都会读取当前最新的AWS_PROFILE值:
PS1='%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m-%B$AWS_PROFILE%b-%{$fg[yellow]%}%~ %{$reset_color%}%% '
如果想在AWS_PROFILE为空时显示默认值(比如default),可以修改为:
PS1='%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m-%B${AWS_PROFILE:-default}%b-%{$fg[yellow]%}%~ %{$reset_color%}%% '
方法2:开启prompt_subst选项
开启zsh的prompt_subst参数后,双引号定义的PS1会在每次显示提示符时重新解析变量:
- 先开启选项:
setopt prompt_subst
- 保持原PS1定义(或加上默认值):
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m-%B${AWS_PROFILE:-default}%b-%{$fg[yellow]%}%~ %{$reset_color%}%% "
建议把setopt prompt_subst加到你的~/.zshrc里,确保每次启动shell都生效。
内容的提问来源于stack exchange,提问作者Vladimir
相关产品推荐
相关产品推荐

