/etc/profile.d中的脚本做什么?

灰泥

我正在从Linux Command Line和Shell Scripting Bible阅读有关基本Shell脚本的信息

它说该/etc/profile文件在Bash shell启动时设置环境变量。/etc/profile.d目录包含其他脚本,这些脚本包含特定于应用程序的启动文件,这些启动文件在外壳启动时也会执行。

  • 如果这些文件/etc/profile对于Bash启动也很重要,为什么不包含这些文件

  • 如果这些文件是特定于应用程序的启动文件,对于Bash启动而言并不重要,那么为什么它们是启动过程的一部分?为什么它们不仅在执行包含它们的设置的特定应用程序时运行?

金发姑娘

如果这些文件对于Bash启动也很重要,为什么它们不属于/ etc / profile呢?

如果您的意思是“为什么不将它们组合成一个巨大的脚本?”,答案是:

  1. 因为这将是负责脚本的人员的维护噩梦。
  2. 因为将脚本作为独立模块加载使整个系统更具动态可调性,所以可以添加和删除单个脚本而不会影响其他脚本。等等。
  3. 因为它们是通过/ etc / profile加载的,所以无论如何它们都是bash“ profile”的一部分。

如果这些文件是特定于应用程序的启动文件,对于Bash启动而言并不重要,那么为什么它们是启动过程的一部分?为什么它们不仅在执行包含它们的设置的特定应用程序时运行?

在我看来,这就像是一个更广泛的设计哲学问题,我将一分为二。第一个问题是关于使用Shell环境的价值和适当性。它有正面价值吗?是的,它很有用。它是解决所有配置问题的最佳解决方案吗?否,但是它对于管理简单参数非常有效,并且也得到广泛认可和理解。相比之下,决定异种地配置这些东西,也许$ PATH可以由单独的独立工具管理,首选工具(例如$ EDITOR)可以在某个地方的sqlite文件中,$ LC lang的东西可以在一个文本文件中,并带有一个自定义格式在其他地方,等等-不只是使用env变量和/etc/profile.d突然看起来更简单?您可能已经知道env变量是什么,它们如何工作以及如何使用它们,而相对于学习5种完全不同的机制来了解适当命名为“环境”的5个不同普遍性方面而言

第二个问题是“启动时间是否合适吗?”,这引起了反对,即效率不是很高(可能会使用或可能不会使用的所有数据,等等)。但:

  • 实际上,并不是所有的数据都那么多,部分原因在于,没有一个人在他们的头脑中会使用多个简单参数作为参数(因为还有其他配置应用程序的方法)。
  • 如果明智地使用它,那么对于通常调用的内容,则每次调用时gcc从某个位置的文件中设置默认的$ CFLAGS会降低效率。请记住,所涉及的内存量同样是无限的。
  • 它可能涉及系统性事物,可能涉及多个应用程序,而外壳是一个共同点

可以将更多内容添加到该列表中,但是希望这可以使您对问题的利弊有所了解-主要的“优点”和主要的“缺点”是它是全局命名空间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章