我不完全确定为什么我的程序中出现错误.bash_profile
syntax error near unexpected token `('
grom()
当我在我的函数中使用关键字时。我想创建一个 bash 函数,它会自动将我的 master 分支重新设置为 origin
# git status
alias gs='git status'
# git stash list
alias gsl='git stash list'
grom() {
branch_name="$(git symbolic-ref --short -q HEAD)"
git fetch && git rebase origin/master && git checkout master && git rebase origin/master && git checkout $branch_name
}
# git stash apply. must append stash@{num}
alias gsa="git stash apply"
当我更改函数名称时,它可以正常编译。我找不到grom
关键字,所以我不确定问题是什么。如果我将函数重命名为其他类似的名称git-rom
,甚至类似的名称groms
,它可以正常编译。是否有一些特殊的关键字不起作用?这是在 Mac OS X 上。
答案1
如果您使用bash
,您可能会更幸运地将其声明为:
function grom() { … }
(笔记:function
不管用在严格的 POSIX shell 中,比如dash
!)
@八月建议(通过对此答案的编辑)这是由于别名冲突(或者,不太合理的是,以某种方式定义的内置函数)。
保留字功能要么改变加载顺序以抢占冲突(别名在函数定义期间扩展),要么通过禁用 bash 来避免问题POSIX模式(这可能允许覆盖内置函数)。
从bash(1)
手册页:
别名在读取函数定义时展开,而不是在执行函数时展开,因为函数定义本身就是复合命令。因此,函数中定义的别名只有在执行该函数之后才可用。
如果您有冲突的别名,您可以unalias grom
在采购之前尝试.bash_profile
(没有必要添加到该文件,除非您仍在定义该冲突的别名)以清除过去的实验。或者,启动一个新终端以重新开始。