Unix Environment Variables(环境变量)

本文参考链接

首先来了解下,当电脑启动时,发生了什么?

下图是系统的基础架构图

当用户登录系统之后,shell 会经历一个初始化的阶段,用来设置环境,通常是执行以下两个目录

  • /etc/profile

  • profile

  • The shell checks to see whether the file /etc/profile exists.If it exists, the shell reads it. Otherwise, this file is skipped. No error message is displayed.
  • The shell checks to see whether the file .profile exists in your home directory. Your home directory is the directory that you start out in after you log in.If it exists, the shell reads it; otherwise, the shell skips it. No error message is displayed.

/etc/profile

在Unix系统中,/etc/profile 是一个全局的启动脚本,用于为所有用户设置系统范围的环境变量和启动程序。具体来说,它做了以下几件事情:

  1. 环境变量设置:它通常会定义一些环境变量,比如 PATHEDITORLANG 等,这些变量对所有用户都会生效。

  2. 启动程序:可以在 /etc/profile 中添加要在每次用户登录时自动执行的命令或程序,例如启动特定的应用程序或脚本。

  3. 配置用户会话:它设置的环境变量和配置会影响所有用户的会话和登录过程。

  4. 执行其他脚本:有时 /etc/profile 会调用其他脚本,比如 /etc/profile.d/ 目录中的脚本,以便分离和组织配置。

  5. 条件判断:根据系统的配置或条件,可以在 /etc/profile 中添加特定的逻辑,以满足不同的需求或环境条件。

这个文件在用户登录时被读取和执行,但具体的操作和设置可能会因Unix的不同版本和配置而有所不同。

/Home/profile

在用户目录下的 .profile 脚本是用户级的启动脚本,它在用户登录时被执行。这个脚本的作用包括:

  1. 设置用户级环境变量:用户可以在 .profile 中定义环境变量,如 PATHEDITOR 等,这些变量只对该用户有效。

  2. 配置用户环境:可以设置其他环境配置,如命令别名、函数等,来定制用户的工作环境。

  3. 启动程序:可以在 .profile 中指定登录时要自动执行的程序或脚本,比如启动个人化的应用程序或自定义的初始化脚本。

  4. 执行其他脚本:用户可以在 .profile 中调用其他脚本,以组织和分离配置内容。例如,可以用 source 命令引入其他文件。

  5. 条件配置:可以在 .profile 中根据系统环境或条件进行配置,以适应不同的工作环境。

/etc/profile 不同,.profile 是特定于每个用户的,允许每个用户根据个人需求定制其环境配置。注意,.profile 文件主要用于登录 shell,若使用其他类型的 shell(如 zsh),可能会使用不同的配置文件,如 .zshrc

环境变量之 PATH

环境变量 PATH 是一个非常重要的环境变量,它在Unix/Linux系统中用于指定可执行文件的搜索路径。具体来说,PATH 变量告诉操作系统在什么路径下查找命令和程序。以下是 PATH 环境变量的详细介绍:

1. 基本概念

  • 作用:当你在终端中输入一个命令(例如 lspython)时,系统会按照 PATH 变量中定义的路径顺序去查找这个命令对应的可执行文件。如果找到了,就执行这个文件;如果找不到,就会显示一个错误信息(通常是 “command not found”)。

  • 格式PATH 变量是由多个目录路径组成的,每个路径之间用冒号 : 分隔。例如:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

2. 设置 PATH

  • 查看当前 PATH:在终端中运行 echo $PATH 可以查看当前的 PATH 设置。

  • 修改 PATH:你可以通过编辑 ~/.bashrc~/.zshrc 或其他 shell 配置文件来添加或修改 PATH。例如:

    1
    export PATH=$PATH:/home/username/bin

    这会将 /home/username/bin 目录添加到现有的 PATH 中。你可以将这行代码添加到配置文件中,并使用 source ~/.bashrc 使更改生效。

3. 优先级

  • 顺序重要PATH 变量中的目录顺序很重要。系统会按照 PATH 中的顺序查找可执行文件,因此如果有多个目录中包含同名的命令,系统会执行第一个找到的命令。

4. 应用场景

  • 用户自定义命令:你可以将自己编写的脚本或程序所在的目录添加到 PATH 中,从而可以在任何位置直接运行这些脚本或程序,而不需要输入完整路径。

  • 软件安装:许多软件在安装时会自动将它们的可执行文件路径添加到 PATH 中,以方便用户直接调用。

5. 例子

  • 查看 PATH

    1
    echo $PATH
  • 临时修改 PATH

    1
    export PATH=/home/username/myprograms:$PATH

    这会将 /home/username/myprograms 目录添加到 PATH 的前面,优先查找这个目录中的程序。

    export 是一个用于在 Unix 和 Linux 系统中的 shell 环境中设置和管理环境变量的命令

  • 永久修改 PATH
    将上述 export PATH=... 语句添加到 ~/.bashrc~/.zshrc 文件中,并执行 source ~/.bashrcsource ~/.zshrc 使其生效。


Unix Environment Variables(环境变量)
https://jackiedai.github.io/2024/08/20/007unix_shell/Unix-environmentVariable/
Author
lingXiao
Posted on
August 20, 2024
Licensed under