# 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**: 清除指定环境变量