# 认识 Linux 系统 ## Linux 内核 Linux 内核(Linux Kernel)是整个 Linux 系统的运行核心,是整个系统最底层的运行程序,但它仅作为核心存在,并非一整个操作系统,各大发行版将其打包成一整个可用的操作系统,这些发行版虽各有特色,但均以 Linux 内核为基础,操作逻辑也极度相似。 ## 系统文件目录结构 一个 Linux 系统的文件系统由一个根目录 `/` 以及此目录下的所有文件与目录构成,根目录下的文件与目录有着如下结构: - `/`:根文件系统,所有挂载点与路径的起点。包含系统必须的子目录与入口结构。 - `bin`:系统启动和单用户模式下必须的基础命令,所有用户可执行。 - `boot`:启动所需文件:内核、initramfs、引导配置。 - `dev`:设备节点集合,一切皆文件。 - `etc`:系统级配置中心,统一存放所有服务和系统配置。 - `home`:普通用户的个人主目录集合。 - `lib`:与 `lib64` 共同构成系统启动核心库、动态链接器所在位置。 - `lib64`:与 `lib` 共同构成系统启动核心库、动态链接器所在位置。 - `mnt`:供磁盘设备挂载的文件夹。 - `opt`:用于存放可选附加应用程序的目录,每个软件在其中拥有独立子目录以避免与系统文件冲突。 - `proc`:由内核提供的虚拟文件系统,展示系统与进程的实时信息。 - `root`:`root` 用户的家目录 - `run`:运行时数据存放点,重启后清空。 - `sbin`:系统管理与维护命令,面向 root。 - `srv`:目录用于存储服务器提供的服务数据,是管理和部署服务环境的标准化目录。 - `sys`:Linux 系统中的 sysfs 文件系统,用于管理和展示内核设备、驱动程序及系统信息 - `tmp`:临时文件目录,任何用户可写,重启后内容通常会被清空(取决于 tmpfs 配置)。 - `usr`:用户级程序与库的主集合,包含大部分系统软件、文档与工具。 - `var`:频繁变化的数据:日志、缓存、数据库运行文件等。 ## 路径 路径表示文件或目录所在的位置,表示方式有两种,一种为绝对路径,一种为相对路径。 绝对路径为从根目录出发,指向文件所在位置,例如 `/home/fovlin/file`。 相对路径表示从当前目录出发,指向文件所在位置,`./`表示当前工作目录,`../` 表示上级目录,`~/`表示用户家目录,运行当前目录下的可执行文件。 其中 `./` 在不作为命令时可忽略,`file` 也表示当前目录下名为 `file` 的文件,但在命令行首项并不能省略,否则会和 `$PATH` 变量的调用冲突,若在首项忽略 `./` 会被当作命令处理。 ## 环境变量 环境变量(Environment Variables)是操作系统中存储的一组动态命名的值,由变量名和变量值组成,相当于系统的“信息库”。程序运行时可以读取这些变量,从而获取配置信息或调整运行行为。 变量在 Linux 中使用 `$` + `变量名` 进行表示。 上文中 `$PATH` 变量就是一个很好的例子。 要查看当前生效的所有环境变量,使用 `env` 命令: ```bash env ``` 同时可以使用 `export` 命令自定义环境变量,这种效果是临时的,在会话结束即失效。 设置一个环境变量,使用如下格式: ```txt export <变量名>=<值> ``` 如将 `/opt/java/bin` 目录临时添加到 `$PATH` 变量中,即设置 `$PATH` 的值为 `$PATH:/opt/java/bin` 使用如下命令: ```bash export PATH=$PATH:/opt/java/bin ``` 此命令的的意思为,在 `$PATH` 变量原有的结构上,再添加 `:/opt/java/bin` 字段,并将 $PATH 变量重新设置为后续值,若你不熟悉此变量的结构,可以参考上文的 `$PATH` 变量说明 要想使环境变量永久生效,应该将上述 `export` 命令写入 Shell 的环境变量文件。 > 此处的 Shell 以 bash 为例。 Shell 在启动时会读取一遍环境变量文件,其本质是将环境变量文件当作 Shell 脚本在 Shell 启动时运行一次,这类文件有 `/etc/profile` `~/.bashrc` `~/.bash_profile`,其中后两者位于用户家目录下的环境变量文件仅对当前用户生效。 编辑文件,在新行写入你要应用的环境变量即可,上文举例更改 `$PATH` 变量,要使其永久生效,写入以下行: ```bash export $PATH=$PATH:/opt/java/bin ``` > 编辑文件的方式将会在后续提及。