我的文件中有 git 别名.bash_aliases
。从昨天开始,当我想添加别名时alias gpuo='git push --set-upstream origin'
。首先,他找不到它,其次,每次我打开新的终端窗口时,他都会打开这个文件。此外,系统提示我编辑 2 个文件。但只有一个 bash 别名文件。我用 find 命令检查了它。
其内容.bash_aliases
为:
alias g='git'
alias gst='git status'
alias ga='git add'
alias gb='git branch'
alias gc='git checkout'
alias gcb='git checkout -b'
alias gpo='git push origin'
alias gf='git fetch'
alias gcm='git commit -m'
alias gp='git pull'
alias grom='git rebase origin/master'
alias gstash='git stash'
alias gstasha='git stash apply'
alias upgrade='sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get autoremove'
alias cl='clear'
alias alias='vim ~/.bash_aliases'
答案1
原始发帖者在检查时找到了解决~/.bash_aliases
方案在编辑中提供了它:
当我按照评论中的建议重写我的问题时,我注意到有一个我称为的别名
alias
。这导致了递归行为。感谢您在正确方向上的推动;)
稍微扩展一下,这是~/.bash_aliases
导致问题的原因,可以简单地将其删除:
alias alias='vim ~/.bash_aliases'
严格来说,问题不是由递归引起的。bash
不会递归扩展别名。例如,大多数 Ubuntu 用户都有alias ls='ls --color=auto'
,这不会导致任何问题;ls
别名定义中的 本身不会扩展。
相反,定义名为 的别名的问题alias
在于,后续尝试使用alias
命令定义别名时会改用别名alias
。在本例中,运行alias ...
的效果与运行 相同vim ~/.bash_aliases ...
,它将运行vim
并打开~/.bash_aliases
,同时尝试打开由 传递的参数命名的文件...
。
alias
当以通常的方式使用该命令来定义别名时,它有一个参数(例如gpuo='git push --set-upstream origin'
)。这解释了打开两个文件的观察结果:
另外,系统提示我编辑 2 个文件。
如果保存了此类文件,则其名称中会有一个=
符号。可能值得查找此类文件以检查它们是否是无意创建的,然后将其删除。但如果它们没有保存,vim
就不会创建它们。