使鱼功能私密

时间:2014-08-01 21:05:56

标签: fish

我定义了几个我只在一个特定鱼脚本中使用的辅助函数。我把它们放在包装函数中,但你仍然可以通过自动完成找到它们。

如何将其隐藏自动完成并将其范围限制为private

function outer
   function inner_func
       echo "I still find this function via automplete"
   end
end

1 个答案:

答案 0 :(得分:5)

没有拥有私人功能,但是it is possible this feature will be available in future versions。在此期间,请尝试使用以下技术,命名约定或两者兼而有之。

functions -e function_name

非常接近您的需求。您可以在块结束前使用functions -e function_name将其从全局范围中删除。

function outer
    function inner_func
        echo "I still find this function via automplete."
        echo "Not anymore!!"
        functions -e inner_func
    end
    # Let's test this!
    inner_func
end


$ outer
I still find this function via automplete.
Not anymore!!
$ inner_func
fish: Unknown command 'inner_func'

命名惯例

  • _my_module_func_name

这不会从全局范围中删除该函数,但是一般的良好做法是避免无意中覆盖现有函数。

注释

在主函数文件中声明的函数(或其他函数内的函数,如inner_func)在其父函数至少被调用一次之后将只能 <(这是鱼懒函数自动加载) ),并且仅在特定shell会话期间存在。