bash:为什么 source 命令实际运行函数?以及如何避免它?



我的 .bashrc 文件中定义了一个函数

function test(){
echo "test function is run"
}

每当我尝试获取我的 .bashrc 文件以获取我最近所做的一些更新时,我注意到这个函数实际上运行并运行了两次。

[myusername@myserver:~]$ source ~/.bashrc
test function is run
test function is run

这很烦人。 我认为源命令只加载函数。 为什么它会运行它? 以及如何避免它? 谢谢。

发生这种情况是因为您的.bashrc中有调用test的现有代码(或从.bashrc调用(。这听起来可能很奇怪——为什么它已经在调用你刚刚创建的函数?— 但这是因为test也是内置于 Bash [link] 中的命令的名称,并且现有代码正在尝试使用该命令。通过使用函数重写test,您将诱骗后面的代码调用您的函数而不是内置命令。

要解决此问题,请将您的函数重命名为test以外的名称,以免干扰后面的代码。

最新更新