diff --git "a/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-6-18-Linux\347\216\257\345\242\203\345\217\230\351\207\217.md" "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-6-18-Linux\347\216\257\345\242\203\345\217\230\351\207\217.md" new file mode 100644 index 0000000000000000000000000000000000000000..feb8b74bae82670997ae5b89a9e0479357d8ed5a --- /dev/null +++ "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-6-18-Linux\347\216\257\345\242\203\345\217\230\351\207\217.md" @@ -0,0 +1,147 @@ +# Linux环境变量 + +## 类型 + +- 系统环境变量:对所有用户都有效的环境变量,通常存储在/etc/profile或/etc/environment文件中。 +- 用户环境变量:只对当前用户有效的环境变量,存储在~/.bashrc或~/.bash_profile等文件中。 + +## 作用 + +环境变量用于配置和控制系统和应用程序的行为,例如设置路径、语言环境、用户信息等。 + +## 加载顺序和文件 + +1. `/etc/profile`:系统范围的环境变量,对所有用户生效。 +2. `/etc/environment`:用来设置系统范围的环境变量。 +3. `~/.bash_profile` 或 `~/.bashrc`:用户特定的环境变量,对当前用户生效。 +4. `~/.bashrc`:如果使用bash shell,默认会加载该文件。 + +## 设置环境变量的方法 + +### 1. 临时设置环境变量 +- 使用 `export` 命令在当前会话中设置环境变量,仅对当前终端有效,关闭终端后失效。 + ```bash + export ENV_VAR=value + ``` + +### 2. 永久设置用户环境变量 +#### 在用户配置文件中设置 +- 在用户的配置文件中(例如 ~/.bashrc 或 ~/.bash_profile)添加以下内容: + ```bash + export ENV_VAR=value + ``` +- 使配置文件生效: + ```bash + source ~/.bashrc + ``` + +### 3. 永久设置系统范围的环境变量 +#### 修改 /etc/profile 文件 +- 在 /etc/profile 文件中添加以下内容: + ```bash + export ENV_VAR=value + ``` +- 使更改生效: + ```bash + source /etc/profile + ``` + +#### 在 /etc/environment 文件中设置 +- 在 /etc/environment 文件中以 `KEY=VALUE` 的格式设置环境变量。 +- 无需重新加载,系统启动时会自动加载。 + +### 4. 使用专门的环境变量配置文件 +- 在 /etc/profile.d/ 目录下创建以 .sh 结尾的文件,每个文件存放一个环境变量的设置: + ```bash + echo 'export ENV_VAR=value' > /etc/profile.d/myenv.sh + ``` + +### 5. 临时修改环境变量的值 +- 直接赋值修改环境变量的值,仅在当前终端生效。 + ```bash + ENV_VAR=new_value + ``` + +注意:在设置或修改环境变量时,需要注意格式和路径,避免出现错误导致系统或应用程序异常。 + +#### 环境变量的设置和使用示例 + +1 设置路径变量(PATH) + +```bash +# 在 ~/.bashrc 中添加 +export PATH=$PATH:/path/to/your/scripts +``` + +2 定义Java环境变量(JAVA_HOME) + +```bash +# 在 ~/.bashrc 或 /etc/environment 中添加 +export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 +export PATH=$JAVA_HOME/bin:$PATH +``` + +3 设置代理服务器(HTTP_PROXY、HTTPS_PROXY) + +```bash +# 在 ~/.bashrc 中添加 +export HTTP_PROXY=http://proxy.example.com:8080 +export HTTPS_PROXY=http://proxy.example.com:8080 +``` + +4 配置编辑器(EDITOR) + +```bash +# 在 ~/.bashrc 中添加 +export EDITOR=/usr/bin/vim +``` + +5 设置语言和地区(LANG、LC_系列变量) + +```bash +# 在 ~/.bashrc 或 /etc/environment 中添加 +export LANG=en_US.UTF-8 +export LC_ALL=en_US.UTF-8 +``` + +6 自定义命令别名(alias) + +```bash +# 在 ~/.bashrc 中添加 +alias ll='ls -alF' +alias grep='grep --color=auto' +``` + +7.设置临时环境变量 + +```bash +# 临时设置变量 +export MY_VAR="value" +``` + +### 4. 常用环境变量 + +```markdown +## 系统级 +- `PATH`:可执行文件的搜索路径。 +- `LANG`:定义系统的语言环境和字符集,例如:`export LANG=zh_CN.utf8` 可以使编辑文件不出现乱码。 +- `LANGUAGE`:用于设置消息语言的优先级,使提示语言为中文。 +- `EDITOR`:默认文本编辑器。 + +## 用户级 +- `HOME`:当前用户的主目录。 +- `USER`:当前用户名。 +- `UID`:当前用户的用户ID。 +- `SHELL`:当前用户的默认Shell。 +``` + +## 临时变量与环境变量 + +临时变量只在当前会话中有效,关闭终端或重启系统后会失效,而环境变量则在整个系统中有效,需要重新登录或重新加载配置文件才能生效。 + +**按生命周期分** +永久环境变量 写在指定类型的配置文件,永不失效 ~/.bashrc /etc/profile.d/xxx.sh +临时环境变量 临时使用export 命令设置的环境变量 退出终端即失效 +**按作用域分** +系统级环境变量 对所有用户生效 /etc/profile.d/xxx.sh +用户级环境变量 只对当前用户生效 ~/.bashrc \ No newline at end of file