较长的 $PATH 环境变量的后果?

较长的 $PATH 环境变量的后果?

我真正需要的功能是能够通过合并真实目录的集合来创建“虚拟目录”(这样您的目录/usr/bin实际上是一个指向目录数组的虚拟目录)。

然而,此功能虽然在某些操作系统中可用,但并不普遍,例如,您不能指望明年使用的操作系统会支持它。

目前,我使用 $PATH 变量作为解决方法,在其中存储我希望“合并”的整个目录集合(并计划使用其他变量,例如 $MANPATH,用于手册页以及类似的等效项)对于图书馆)。

我目前没有遇到任何性能问题,因为“合并目录”的集合并不大,但我想知道如果将来数量达到数百个目录,我是否会遇到问题(我不知道)但不知道是否会发生这么大的数字)。

我猜测在可预见的未来“合并”目录的预期数量约为4050

我为此功能找到的解决方法主要基于管理符号链接,从而有效地将所有合并目录中的所有文件镜像为从“统一”目录指向它们的符号链接。然而,这种方法对我来说看起来过于复杂。它看起来不像是一个整洁、干净的解决方案。

您认为我可以继续使用 $PATH 方法,还是应该停止、重新考虑并研究其他选择?

答案1

贝壳通常缓存有关在何处找到外部实用程序的信息,这意味着它实际上只需要对每个非缓存实用程序进行一次查找。

$PATH如果使用合理的 shell,我不认为 long会带来严重的性能问题。

对于替代解决方案,请查看GNU 斯托

答案2

$PATH解决方案很大程度上依赖于$PATH在启动时成功设置,如果环境配置以某种方式损坏/删除,整个设置就会失败。

符号链接方法更加健壮,因为它基本上是自力更生的,尽管设置起来有点复杂。

GNU Stow 项目和尼克斯操作系统是使用符号链接方法的两种方法,您可以使用或检查它们以深入了解其在实践中的工作原理。

相关内容