linux配置文件

理解 Linux 配置文件

Linux 的核心哲学之一就是几乎一切皆可通过文本文件来配置。这些配置文件控制着从系统启动、网络连接到每个用户个性化环境的所有方面。

  • 位置与功能​:绝大多数系统级的配置文件都集中在 /etc目录下 。此外,许多应用程序和用户级配置则以“点文件”(如 ~/.bashrc)的形式隐藏在用户的家目录中 。

  • 无统一格式​:Linux 下的配置文件没有强制性的统一格式 。可能是一行一个条目的简单列表(如 /etc/shells),也可能是具有特定语法结构的复杂文件(如 Apache 的 /etc/httpd.conf)。

    • source不关注于文件类型,只关心文件内容是否是合法的Shell命令

  • 常见配置文件示例​:

配置文件路径

主要功能描述

/etc/profile, ~/.bashrc, ~/.bash_profile

系统级和用户级的 Shell 环境变量与启动脚本 。

/etc/passwd, /etc/group, /etc/shadow

存储用户账户、组信息和加密后的密码 。

/etc/fstab

定义系统启动时自动挂载的文件系统 。

/etc/hosts

本地的主机名与 IP 地址映射,常用于本地测试或覆盖 DNS 解析 。

/etc/resolv.conf

配置系统使用的 DNS 服务器地址 。

~/.vimrc, ~/.gitconfig等

各类应用程序的用户级个性化配置 。

source 命令的作用与原理

修改了配置文件之后,需要让这些更改生效,这时 source命令就派上用场了。

  • 原理​:source是一个 Bash shell 的内置命令(也可以用点号 .来等效替代),它的功能是读取指定的脚本文件,并在当前 Shell 环境中按顺序执行其中的命令。关键在于“当前 Shell 环境”这几个字。它不会启动一个新的子进程来执行脚本,而是直接在当前已打开的 Shell 会话中运行。

    • Shell的本质也只是一个有着独立运行空间的进程,使用source命令或者点命令时,就是读取对应的配置文件逐命令执行(source就是bash shell的一个内置命令,负责把命令从“文件”“读取”到“控制台”,而Shell中有着真正的解释器),所有操作都发生在当前空间中。

    • 而执行sh文件时,则是创建了新的子进程(有着完全独立的进程空间),子进程会复制最初父进程的环境,然后在独立、封闭的空间中执行脚本。脚本执行完后,子进程结束,所在的空间连同其环境变量都会消失。

    • source作用后仅在此窗口内有效

    • 使用 sh或 ./执行脚本时,会启动一个全新的子 Shell 进程,脚本中的所有操作都在这个“沙箱”中进行。当脚本运行结束,这个子 Shell 会关闭,在其中所做的任何更改(比如设置变量)都会随之消失,​不会影响原来的 Shell 环境

    • 操作系统在用户登录时,会自动顺序执行一系列全局配置文件,这些系统级配置文件会应用于每一个登录的用户

  • 因此希望配置“全局生效”的标准做法:

    • 将配置写入正确的全局配置我文件中,例如在/etc/profile.d目录下创建一个.sh文件,或者直接编辑/etc/profile

    • 此后当任何用户重新登录系统时,系统会在启动过程中自动读取并执行这些文件,相当于为每一个新会话自动执行了一次source

  • 一个典型的应用场景​:当你修改了 ~/.bashrc文件(该文件定义了你的 Shell 环境),希望新的设置立即生效,而不想重新登录或者打开一个新的终端窗口,就可以执行:

    ## 使得配置在当前shell立即生效
    source ~/.bashrc
    
    . ~/.bashrc

为什么需要 source

理解为什么需要 source,关键在于区分脚本执行的两种方式:

执行方式

命令示例

运行环境

对当前环境的影响

​source(或 .)​​

source config.sh

当前 Shell

脚本中设置的变量、别名等会保留在当前 Shell 中,直接生效 。

​sh或 ./​

sh config.sh或 ./config.sh

新建的子 Shell

脚本中的更改仅在子 Shell 内有效,脚本执行完毕后,子 Shell 关闭,更改不会影响父 Shell 。

需要让一个脚本(特别是环境配置脚本)对当前正在使用的 Shell 会话立即产生持久影响时,就必须使用 source命令。

总结与注意事项

总而言之,Linux 配置文件是控制系统和程序行为的基石,而 source命令则是让这些配置更改在当前会话中立即生效的工具。

注意source只会​在当前 Shell 环境中执行脚本文件,使脚本中的更改直接作用于当前环境。而sh和bash则是启动子进程。

linux系统的启动,以及应用的启动都依赖于读取配置文件的方式,因此不要随意修改已有的配置。在修改系统级配置文件(尤其是 /etc目录下的文件)时,一定要慎重再慎重,因为错误的配置可能导致服务器挂掉 。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值