Greg Asked: 2017-07-03 20:09:39 +0800 CST2017-07-03 20:09:39 +0800 CST 2017-07-03 20:09:39 +0800 CST /etc/network/interfaces.d/* 在 /etc/network/interfaces 文件的顶部做什么? 772 我注意到默认情况下,以下行包含在/etc/network/interfaces: source /etc/network/interfaces.d/* 这条线的目的是什么,它实际上是做什么的? linux 2 个回答 Voted Best Answer Paul 2017-07-03T20:27:24+08:002017-07-03T20:27:24+08:00 从 Ubuntu界面手册页: 以“source”开头的行用于包含来自其他文件的节,因此可以将配置拆分为多个文件。单词“source”后面是要获取的文件的路径。可以使用 Shell 通配符。目前只支持绝对路径名。 Anthony Rutledge 2019-06-25T14:57:47+08:002019-06-25T14:57:47+08:00 讨论 该source命令是.(源)语法的文本版本。这允许您从一个文件中包含/导入代码并将其合并到父文件中。但是,从 Ubuntu 16.04 的基本安装中并不清楚为什么这source条线会排在第一位。意思是,如果有人想为enp0s3下面的接口使用静态 IP,这是否意味着我必须先注释掉/擦除该iface行enp0s3? file和file.d方案很常见。如果您运行 Apache HTTP 服务器,您可能已经看到apache24/conf/httpd.conf并且它位于extra/目录中,其中包含更多 *.conf 文件(通常是httpd-ssl.conf、httpd-vhosts.conf、php.conf、httpd-default.conf等)。在这种情况下,不包括shell脚本,但原理基本相同。 为什么要这样做? 1. 关注点分离。 最好只弄乱一个接口配置,然后做一些可能影响多个接口的事情。通过将事物分开,实际上可以更轻松地编写自动化的 shell 脚本。 /etc/network/interfaces无需使用sed、grep和筛选awk正确的界面,您可以简单地/etc/network/interfaces.d/使用基本文件通配符定位正确的文件。 通过将事情分开,你搞砸的机会会大大减少。 2. 从长远来看,更好的组织。 如果您考虑 interfaces.d/ 包含什么,它包含网络接口配置的“实例”(可能会变得相当复杂)。这样,不必滚动所节省的时间可能会使interfaces.d/成为可行的方法。 结论 您是否正在计划专业设置?用于/etc/network/interfaces.d/保存网络接口的配置(每个接口一个文件)。 您是在地下室(在具有一个界面的计算机上)使用 Linux 的爱好者,并且不太关心让别人的生活更轻松吗?使用/etc/network/interfaces并继续你的生活。注释掉默认配置设置,或完全删除它们。 请记住,尽管接口的手册页说接口配置命令是累积的,允许在每个接口上使用多个协议和多个 IP 地址(v4 和 v6)。归根结底,您决定进入/etc/network/interfaces. 喜欢默认的环回配置?将配置转储到文件中并将其放入/etc/netowork/interfaces.d/. 现在,对任何其他默认安装界面设置执行相同操作。留下一个注释/etc/network/interfaces,上面写着“此文件不用于更改接口配置!在 /etc/network/interfaces.d 中查找正确的接口文件。 /etc/netowork/interfaces.d/使用类似的约定命名文件。Red Hat 系统使用 ifcfg- 的接口文件前缀约定。 因此,我可能会在/etc/network/interfaces/d没有指导的情况下继续使用该约定。 /etc/network/interfaces.d/ifcfg-lo /etc/network/interfaces.d/ifcfg-enp0s3 一定要读man interfaces。 祝你好运!
从 Ubuntu界面手册页:
讨论
该
source
命令是.
(源)语法的文本版本。这允许您从一个文件中包含/导入代码并将其合并到父文件中。但是,从 Ubuntu 16.04 的基本安装中并不清楚为什么这source
条线会排在第一位。意思是,如果有人想为enp0s3
下面的接口使用静态 IP,这是否意味着我必须先注释掉/擦除该iface
行enp0s3
?file和file.d方案很常见。如果您运行 Apache HTTP 服务器,您可能已经看到apache24/conf/httpd.conf并且它位于extra/目录中,其中包含更多 *.conf 文件(通常是httpd-ssl.conf、httpd-vhosts.conf、php.conf、httpd-default.conf等)。在这种情况下,不包括shell脚本,但原理基本相同。
为什么要这样做?
1. 关注点分离。
最好只弄乱一个接口配置,然后做一些可能影响多个接口的事情。通过将事物分开,实际上可以更轻松地编写自动化的 shell 脚本。
/etc/network/interfaces
无需使用sed
、grep
和筛选awk
正确的界面,您可以简单地/etc/network/interfaces.d/
使用基本文件通配符定位正确的文件。通过将事情分开,你搞砸的机会会大大减少。
2. 从长远来看,更好的组织。
如果您考虑 interfaces.d/ 包含什么,它包含网络接口配置的“实例”(可能会变得相当复杂)。这样,不必滚动所节省的时间可能会使interfaces.d/成为可行的方法。
结论
您是否正在计划专业设置?用于
/etc/network/interfaces.d/
保存网络接口的配置(每个接口一个文件)。您是在地下室(在具有一个界面的计算机上)使用 Linux 的爱好者,并且不太关心让别人的生活更轻松吗?使用
/etc/network/interfaces
并继续你的生活。注释掉默认配置设置,或完全删除它们。请记住,尽管接口的手册页说接口配置命令是累积的,允许在每个接口上使用多个协议和多个 IP 地址(v4 和 v6)。归根结底,您决定进入
/etc/network/interfaces
. 喜欢默认的环回配置?将配置转储到文件中并将其放入/etc/netowork/interfaces.d/
.现在,对任何其他默认安装界面设置执行相同操作。留下一个注释
/etc/network/interfaces
,上面写着“此文件不用于更改接口配置!在 /etc/network/interfaces.d 中查找正确的接口文件。/etc/netowork/interfaces.d/
使用类似的约定命名文件。Red Hat 系统使用 ifcfg- 的接口文件前缀约定。因此,我可能会在
/etc/network/interfaces/d
没有指导的情况下继续使用该约定。一定要读
man interfaces
。祝你好运!