我有以下别名:
alias mv='mv -i'
alias git='LANG=en_US \git '
然后当我执行git mv
命令时,它mv
会被解释为mv -i
:
$ git mv a b
error: unknown switch `i'
我希望仅当它是 bash 命令时才应用别名
版本:
- Ubuntu 16.04.3 LTS
- GNU bash,版本 4.3.48(1)
- git 版本 2.7.4 (我也不认为它与 git 链接)
笔记:
git \mv a b
作品- 取消混叠 git 也可以
\git mv a b
答案1
因为git
是别名以空格结尾,bash 对紧随其后的单词执行别名扩展:
$ alias mv='mv -i'
$ alias git=': git '
$ set -x
$ git mv
+ : git mv -i
从文档:
如果别名值的最后一个字符为空白,则还会检查别名后面的下一个命令字是否有别名扩展。
创建git
一个不带空格的别名:
alias git='LANG=en_US git'
注意:
替换文本的第一个单词会进行别名测试,但与正在扩展的别名相同的单词不会再次扩展。例如,这意味着可以别名
ls
为ls -F
,并且 Bash 不会尝试递归地扩展替换文本。
所以,你不需要\git
那里。