我可以让 bash 假设命令总是一个 git 命令吗?
我的意思是:
如果我写push origin master
那么它会执行git push origin master
?
注意:我会在git bash(Windows环境)中使用它,所以我不需要常规命令(ls,cd等)就可以工作。
你可能想试试这个小的 git shell,而不是:
gitsh () {
while read -r -p "gitsh> " -a GITCOMMAND; do
git "${GITCOMMAND[@]}"
done
}
定义该函数后,运行一次,它将处于无限循环中,读取命令行并将其作为选项传递给 git
命令。
编辑:按照gniourf_gniourf的建议,将-e
选项添加到read
命令中,为您提供了一个很好的基于Readline的环境,您可以在其中检索和编辑历史记录。
您可以为常用命令添加别名,例如 push
会变得git push
等等。此解决方案需要指定您正在使用的所有命令,但不应破坏任何命令。
假设"git bash"就像常规bash一样,使用command_not_found_handle
函数:
function command_not_found_handle {
command git "$0" "$@"
}
http://www.gnu.org/software/bash/manual/bashref.html#Command-Search-and-Execution
存在发送 git 无意命令的可能性,但这就是您在问题中要求的。
您可以将名为 push、commit 等的脚本添加到您的 PATH 中。这样你的 shell 就会有推送、提交等"命令"。这应该适用于您正在使用的任何 shell,而不仅仅是 bash。