在我的点文件中,我有一些依赖别名或函数存在的函数才能工作。出于某种原因,我可以让它们引用我创建的其他函数,但不能引用命令的别名。我该如何解决?
例子:
function open-dotfiles-commit(){
xopen https://github.com/fatso83/dotfiles/blob/$1;
}
如果我有别名xopen
( alias xopen=xdg-open
),该open-dotfiles-commit
命令将失败并显示xopen: cannot find command
. 另一方面,如果我用一个名为xopen
( function xopen(){ xdg-open; };
) 的函数替换别名定义,它就可以工作!
我什至尝试shopt -s expand_aliases
在与我定义别名的位置相同的文件中进行设置 - 不成功。别名和函数文件来自我的.bashrc
.
从bash 手册:
我敢打赌,您的别名是在定义这些函数之后定义的。稍后尝试定义函数。
作为参考,我
foo () { ll "$1"; }
使用ll
默认的别名进行了测试,.bashrc
它工作正常。可运行示例: