# linux+unix-exprot
**Repository Path**: hello-luiswu/linux-unix-exprot
## Basic Information
- **Project Name**: linux+unix-exprot
- **Description**: Linux & Unix 环境变量
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-07-16
- **Last Updated**: 2024-07-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 定义变量
`格式:` 变量名=变量值
```
var1=3939
var2="hello world"
```
## 1. 系统环境变量
- PATH:决定了 shell 将到哪些目录中寻找命令或程序
- HOME:用户的家目录
- USER:用户登录的用户名。
- PWD:当前系统路径(当前用户工作所在目录)
- HISTSIZE:shell 的历史记录, 能记录最多历史命令的条数
- LOGNAME:用户的登录名(等同于 USER)
- HOSTNAME:主机的名称
- HOST:指主机的名称(macos)
- SHELL:当前用户正在使用的shell, 默认使用的是 `/bin/bash`
- LANG(LANGUGE):语言相关的环境变量,多语言可以修改此环境变量(不重要)
- MAIL:用户邮件的存放目录(不重要)
## 2. 变量周期分类
1. **零时变量**: 用 `export` 命令在终端环境下声明变量,重启 Shell 就会失效
2. **永久变量**: 用户将变量添加到相关的配置文件,如: `/etc/profile` `~/.bash_profile` `~/.zshrc` ,添加后则永久生效, 重启 shell 也不会失效,
## 3. 变量作用域分类
1. **用户级**: 仅对设置这个变量的用户生效,对其他用户则无效
- 将环境变量写进用户目录下的`~/.bash_profile` 或 `~/.zshrc` 文件里面
- `.bash_profile` 是针对 bash 用户的, `.zshrc` 是针对 zsh 用户的.
2. **系统级**: 对该系统中所有用户都有效
- 将环境变量写进系统目录下的 `/etc/profile` 文件里面
## 4. 书写格式
这里我们约定俗成一下名词: 变量值=路径
```
单变量值
export 变量名=路径1
多变量值
export 变量名=路径1:路径2:路径3:路径4
引用变量作为变量值
export 变量名=$变量1:$变量2:路径1:路径2
```
1. 如果直接写成 `export PATH=/.../.../...`, 这样新添加的变量会覆盖 `PATH` 之前的所有的变量值,若想不覆盖就要书写成 `export PATH=$PATH:/.../...`
- `$PATH` 的作用是新加的路径也包含自己, 相当于引用了 `PATH` 自己现有的变量值
- 这里的 `$` 符号可以理解为引用符号, 引用已经定义的变量的值
3. 追加多条路径由 `:` 进行分隔, 如: `export PATH=$PATH:$HOME/nvim/:/tmp/` , `:` 后面加上自己要追加的路径, 新加的路径会追加到 `PATH` 里面
## 5. 变量相关命令
1. **env**: 查看当前用户全部的环境变量
2. **export**: 显示当前系统定义的所有环境变量, 设置环境变量
3. **printenv**: 查看指定环境变量的值
4. **unset**: 清除指定环境变量