打开新的终端导致编辑 bash_aliases 文件

打开新的终端导致编辑 bash_aliases 文件

我的文件中有 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就不会创建它们。

相关内容