我有几个我在做的项目。我宁愿在导航到该特定目录时设置它,而不是为每个项目的位置设置别名。每个项目都是一个 git repo,当我导航到它时,我已经有一种机制可以将当前分支名称附加到 $PS1。
在我的 .bashrc 中,我调用了一个函数: parse_git_branch 以附加到命令提示符:
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h:\w\a\]$PS1\$(parse_git_branch) "
;;
*)
;;
esac
parse_git_branch 在我的 .basrhc 末尾定义:
function parse_git_branch {
GIT_BRANCH=$(git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ \[\1\]/')
if [[ -n $GIT_BRANCH ]];then
source $HOME/bin/cur
fi
echo $GIT_BRANCH
}
如果 GIT_BRANCH 不为空,我会获取一个简单的脚本 ~/bin/cur,它为 pwd 设置别名:
#!/bin/bash
echo "got here!"
shopt -s expand_aliases
alias current="cd $(pwd)"
获取 cur 时,未设置别名。但是,调试消息确实显示正确。
我相信这是因为 shell 脚本在我当前环境的“外部”运行。当从命令行调用 source cur 时设置别名。
那么,为什么从我的 .bashrc 中的“parse_git_branch”调用时没有设置别名?
谢谢!