如何在bash中对用户隐藏私有函数?

How to hide private functions from the user in bash?

提问人:Bartek Lachowicz 提问时间:4/13/2023 最后编辑:Bartek Lachowicz 更新时间:4/13/2023 访问量:114

问:

在获取以下代码后,我的终端能够看到功能。__hey

super_tools() {


    case "$1" in
        "hey")
            __hey
            ;;
        *)
            echo "Invalid argument: $1"
            ;;
    esac
}


function __hey() {
        echo "hey"
    }

我想防止这种情况发生,以便用户只能看到并可以进一步提供它。是否可以在不取消设置功能的情况下执行此操作?super_toolshey

成员 bash 完成 私有方法

评论


答:

1赞 tripleee 4/13/2023 #1

不,shell 中没有私有或隐藏函数的概念。为了使某些东西可以运行,它需要在命名空间中可见。

有一些工具可以混淆 shell 脚本,但它们基本上相当于将代码编译成本机二进制文件,这很乏味,但不一定很难反汇编。

评论

0赞 Bartek Lachowicz 4/13/2023
谢谢你的评论。附带问题:当我想通过提取函数中的功能来实现它但使用户无法访问它们时,实现super_tools的标准方法是什么?是不定型的?
0赞 tripleee 4/13/2023
我不明白这个问题。一个常见的技巧是通过在它们前面加上下划线来将事物标记为伪私有。
0赞 Bartek Lachowicz 4/13/2023
我是抨击的新手,也许这就是为什么我不能问正确的事情,但我认为我现在可以走了。再次感谢。我基本上想知道是否有可能以某种方式完全隐藏本地功能。