~/.bash_aliases
我在其中设置了 PS1,并且包含在~/.bashrc
(默认设置)中
# color PS1
PS1="\[\033[01;90m\]\D{%H:%M} \[\033[01;33m\]Ubuntu\[\033[00m\] \[\033[01;34m\]\w\[\033[01;35m\]$(__git_ps1) \[\033[01;36m\]\$\[\033[00m\] "
但是当我启动终端时出现错误__git_ps1:未找到命令
但是当我在 git 文件夹中运行功能手册时,$ __git_ps1
它确实回显了当前分支。
此外当我手动运行
$ PS1="\[\033[01;90m\]\D{%H:%M} \[\033[01;33m\]Ubuntu\[\033[00m\] \[\033[01;34m\]\w\[\033[01;35m\]$(__git_ps1) \[\033[01;36m\]\$\[\033[00m\] "
PS1 已更新,__git_ps1
部分内容已添加。
我没有自己安装,只安装了git。
sudo apt install -y git
(git版本2.19.1)
__git_ps1
定义在/usr/lib/git-core/git-sh-prompt
(文件github)
grep __git_ps1 ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login ~/.bash_aliases /etc/bash.bashrc /etc/profile /etc/profile.d/* /etc/environment 2>/dev/null
只.bash_aliases
显示文件。git
-sh-promt 的完整 grep 仅返回二进制匹配
sudo grep 'git-sh-prompt' -nr /
这里有什么问题?
答案1
为了清晰起见,使用脱色版本:
PS1="\D{%H:%M} Ubuntu \w$(__git_ps1) \$ "
双引号告诉 Bash 评估引号之间的内容,包括$(__git_ps1)
,但/usr/lib/git-core/git-sh-prompt
尚未获取来源,因此出现错误。
只需将其更改为使用单引号,这将阻止$(__git_ps1)
在 PS1 被评估之前被评估(即当交互式 shell 准备好输入并显示提示时)。
PS1='\D{%H:%M} Ubuntu \w$(__git_ps1) \$ '
转义美元符号也有效,但是更难阅读:
PS1="\D{%H:%M} Ubuntu \w\$(__git_ps1) \$ "
顺便说一句,~/.bash_aliases
是用于 shell 别名的,所以把它放在这里很奇怪PS1
。我个人会把它放在这里~/.bashrc
。