这应该很简单。 我最近注意到,当我在Mac上的“终端”中键入“bash”时,它会显示:
Jays-MacBook-Pro: ~ $ bash
bash: parse_git_branch: command not found
之前没有。有人可以解释为什么以及如何解决。
答案 0 :(得分:6)
您可能已将BASH配置为运行parse_git_branch并将结果作为PS1(或类似)的一部分打印。您可以通过以下方式检查:" echo $ PS1"和#34; echo $ PROMPT_COMMAND"。
但是,parse_git_branch不是bash的内置函数。以下是我配置PS1的方法。您可能希望将我的git_branch_4_ps1复制为parse_git_branch
PS1='\n' # begin with a newline
PS1=$PS1'\[\e[38;5;101m\]\! \t ' # time and command history number
PS1=$PS1'\[\e[38;5;106m\]\u@\h ' # user@host
PS1=$PS1'\[\e[7;35m\]${MY_WARN}\[\e[0m\] ' # warning message if there is any
PS1=$PS1'\[\e[38;5;10m\]${MY_EXTRA} ' # extra info if there is any
PS1=$PS1'\[\e[0;36m\]$(git_branch_4_ps1) ' # git_branch_4_ps1 defined below
PS1=$PS1'\[\e[38;5;33m\]\w' # working directory
PS1=$PS1'\n\[\e[32m\]\$ ' # "$"/"#" sign on a new line
PS1=$PS1'\[\e[0m\]' # restore to default color
function git_branch_4_ps1 { # get git branch of pwd
local branch="$(git branch 2>/dev/null | grep "\*" | colrm 1 2)"
if [ -n "$branch" ]; then
echo "(git: $branch)"
fi
}
答案 1 :(得分:3)
而不是
parse_git_branch
单独调用PS1定义你可以使用
parse_git_branch 2>/dev/null
将stderr
发送给/dev/null
。这样可以消除您不想看到的错误。
答案 2 :(得分:1)
interceptor
否则你应该通过run:
导出它printenv
之后你可以毫无问题地运行sudo或sudo su
答案 3 :(得分:0)
如果您的parse_git_branch
是在~/.bash_profile
中定义的,则在您打开非登录外壳程序(例如通过运行bash
)时不会加载它。
登录外壳程序和非登录外壳程序的区别如下:Difference between Login Shell and Non-Login Shell?就我们的目的而言,主要区别在于登录外壳程序(例如,当您第一次打开Terminal时)在启动时会自动提供~/.bash_profile
,而非登录外壳程序(例如,当您在Terminal中运行bash
时)则不会。
要解决此错误,只需在运行bash之后获取~/.bash_profile
即可:
user@host:~ $ bash
bash: parse_git_branch: command not found
user@host:~ $ source .bash_profile
或者,将函数放在~/.bashrc
中,该函数将由非登录外壳程序自动提供(如先前的链接所述)。