有没有办法像 C 中那样为 bash 提供命名空间?

tre*_*ent 1 shell bash programming shell-script

我所说的就像在 C 中一样,你可以使用带有语句的命名空间using namespace blah blah blah,你能在 bash 中做同样的事情吗?

Whi*_*Owl 10

嗯,C 中没有命名空间,C++ 中是有的。但C中没有。

不,两者都没有名称空间bashbash具有三个名称空间——局部变量、函数和环境变量。所以你可以同时拥有变量foo和函数。foo()但不是两个不同的foo()功能。如果定义它们 - 第二个将始终覆盖第一个。

在 中bash,如果您确实需要处理名称冲突 - 常见的解决方案是为源变量和/或函数提供前缀或后缀。

  • 作为历史记录:在 Bourne shell 中,变量和函数共享相同的命名空间;你不能同时拥有同名的函数和变量。 (5认同)
  • 当然,这是可以理解的。这只是一个“历史记录”,bash 是 Bourne-Again SHell(尽管它更像 Korn,而不是 Bourne)。 (2认同)