bash - PS1 中的命令替换不会在应该更新的时候更新;缓存输出?
问题描述
我正在尝试在终端提示符上添加分支名称,例如user@host:directory [branch]
. 我尝试了两个代码,发现 Code.2 没有按我的预期工作;签出另一个分支时不会反映分支名称。似乎 bash 正在缓存上一个命令的结果。
有人可以告诉我 Code.2 的问题是什么吗?我也想知道\
before是什么$()
意思?
环境
- macOS 10.14.3
- 混帐 2.19.2
Code.1 - 它有效
user@host:directory [master]$ cat ~/.bashrc
PS1="\u@\h:\W \$(git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/[\1]/')\$ "
user@host:directory [master]$ git checkout another-branch
user@host:directory [another-branch]$
user@host:directory [another-branch]$ git checkout master
user@host:directory [master]$
Code.2 - 它失败了
user@host:directory [master]$ cat ~/.bashrc
BRANCH_NAME=$(git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/[\1]/')
PS1="\u@\h:\W ${BRANCH_NAME}\$ "
user@host:directory [master]$ git checkout another-branch
user@host:directory [master]$
user@host:directory [master]$ git checkout master
user@host:directory [master]$
解决方案
推荐阅读
- go - 如何在不提及确切目录的情况下从目录中读取 yaml 文件?
- dart - 飞镖未来和重新投掷
- reactjs - axios请求token在刷新页面时返回null
- coq - 向量间相等的定义
- sql - 如何找到用户在 bigquery 中执行的不同会话的engagement_time_msec 总和?
- javascript - 在 reactjs (context api) 中使用 axios 下载 pdf 文件的问题
- ios - 在 xamarin.ios 上播放和设置视频控件(如播放、暂停、停止、音量和搜索栏)的最佳方式是什么
- python - VSCode中的python交互问题
- node.js - 浏览器中的缓冲区库不返回与 nodejs 中相同的值
- git - 如何删除根目录深处的 node_modules 一个文件夹