对于开发者来说,环境变量是在设置语言的开发环境时,需要配置的一个目录,才可以使用这个语言的库,运行这个语言这个语言的代码,那么为什么设置玩环境变量之后,为什么就可以使用 java -jar、go run 这样的命令了呢?这篇文章,会给你答案。
介绍
定义:环境变量是一种用于存储和传递系统配置信息的机制,它在操作系统中起着非常重要的作用,尤其是在与软件和系统交互时。环境变量存储的是键值对,操作系统和应用程序可以通过这些键值对来获取或配置特定的运行时信息。
解释:对于一个开发者来说,环境变量就是在设置语言的开发环境时,需要配置的一个目录,才可以使用这个语言的库,运行这个语言这个语言的代码,那么为什么设置玩环境变量之后,为什么就可以使用 java -jar、go run 这样的命令了呢?这篇文章,会给你答案。
使用
环境变量的用途
1. 配置程序的行为:
环境变量可以传递给应用程序,用于配置它们的行为。比如,指定数据库的连接信息、应用程序的运行模式(开发、生产)等。
2. 存储系统相关信息:
环境变量可以存储与系统相关的重要信息,比如当前用户、当前的工作目录、操作系统的路径等。
3. 全局配置共享:
环境变量在操作系统层面是全局的,这意味着它们可以在多个程序或进程之间共享信息,且不需要在每个应用程序中显式传递。
常见的环境变量
一些常见的环境变量及其作用如下:
• PATH:存储可执行文件的查找路径。当你在命令行输入一个命令时,操作系统会在PATH指定的目录中查找对应的可执行文件。
• HOME:当前用户的主目录路径。在类 UNIX 系统中,它通常是 /home/username 或 /Users/username。
• USER:当前登录的用户名。
• SHELL:当前用户使用的命令行解释器(例如 bash、zsh)。
• JAVA_HOME:Java 开发工具包(JDK)或 Java 运行时环境(JRE)的安装路径,用于Java相关程序查找 Java 安装位置。
• LANG:设置系统的语言和编码。
环境变量的特点
1. 系统范围和用户范围:
环境变量可以是系统范围的,也可以是用户范围的。系统范围的环境变量对所有用户和进程都可用,而用户范围的环境变量只对特定用户的进程可用。
2. 临时性和永久性:
环境变量可以是临时的或永久的。临时环境变量在关闭终端或重新启动系统后失效。永久性环境变量通常通过修改配置文件(如 .bashrc 或 .bash_profile)来实现。
如何查看和设置环境变量
在 Linux 中:
• 查看所有环境变量:
printenv
• 查看某个环境变量:
echo $PATH
• 临时设置一个环境变量:
export JAVA_HOME=/path/to/java
• 永久设置环境变量:
- 可以编辑用户的 ~/.bashrc 或 ~/.zshrc 文件,
nano ~/.bashrc
- 添加一行:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
export PATH=$JAVA_HOME/bin:$PATH
- 保存
- 并运行 source ~/.bashrc 以使其生效。
source ~/.bashrc
因为环境变量(特别是 PATH)告诉操作系统在哪里查找可执行程序。当你在终端中输入 java 或 go 这样的命令时,操作系统需要知道在哪些路径下查找对应的可执行文件。通过设置 PATH 环境变量,可以让系统找到这些程序并执行它们。
PATH 的作用
**为什么设置 PATH 之后可以使用命令?**操作系统根据 PATH 环境变量中指定的目录查找可执行文件,步骤如下:
1. 输入命令:当你在终端中输入 java 或 go 命令时,操作系统首先会认为这可能是某个程序的名称。
2. 查找路径:操作系统会根据 PATH 环境变量,依次在其中列出的目录中查找是否有一个名为 java 或 go 的可执行文件。
3. 找到并执行:一旦找到对应的可执行文件,操作系统会加载并运行它。如果在 PATH 所有指定的目录中都找不到该命令,终端会返回类似于“command not found”(找不到命令)的错误信息。
PATH 是一个非常重要的环境变量,它定义了操作系统在命令行中执行命令时,应该搜索哪些目录来查找可执行文件。当你在终端中输入一个命令(如 java 或 go)时,操作系统会按照 PATH 环境变量中定义的目录顺序,依次查找这些目录,直到找到匹配的可执行文件。,这就是你设置环境变量后可以直接使用 java、go 这样的命令的原因。如果找到了,它就会运行该文件;如果没找到,系统会返回一个“命令找不到”的错误消息。
有哪些配置文件
/.bashrc、/.zshrc 和 ~/.bash_profile 都是配置文件,用于定义命令行 Shell(如 Bash、Zsh 等)的环境变量、别名、函数等,但它们有不同的用途和执行时机。它们的区别主要体现在执行的条件和使用的 Shell 类型上。
• ~/.bashrc:用于 Bash 非登录 Shell(打开新终端时)的配置文件。
• ~/.bash_profile:用于 Bash 登录 Shell(登录系统时,或通过 SSH 登录)的配置文件。
• ~/.zshrc:用于 Zsh Shell 的配置文件(类似 ~/.bashrc,但用于 Zsh)。
• ~/.profile:用于 所有登录 Shell,是 .bash_profile 的通用替代品。