跳转至

第 6 章 Linux 环境变量

约 361 个字 20 行代码 1 张图片 预计阅读时间 2 分钟

环境变量传递配置与状态;区分全局/局部,掌握启动文件加载顺序。

6.1 概念

  • 环境变量:子进程继承的全局变量(export 后)
  • 局部变量:仅当前 Shell 可见
Bash
echo $HOME $PATH $USER $SHELL $PWD
set                # 所有变量
env                # 环境变量
printenv VAR

6.2 设置与删除

Bash
MYVAR=hello        # 局部
export MYVAR       # 导出为环境变量
export MYVAR=world # 一步完成
unset MYVAR        # 删除

规则:赋值 等号两侧无空格;引用用 $VAR${VAR}

参数扩展(常用)

Bash
${VAR:-default}         # VAR 空或未设置 → 用 default(不赋值)
${VAR:=default}         # 同上,且把 default 赋给 VAR
${VAR:+value}           # VAR 已设置 → value,否则空
${#VAR}                 # 字符串长度
${VAR/old/new}          # 替换首个

6.3 开发者常见变量

变量 含义
HOME 主目录
PATH 命令搜索路径
PWD / OLDPWD 当前 / 上次目录
USER / LOGNAME 当前用户名
SHELL 当前 Shell
EDITOR / VISUAL 默认编辑器(crontab、git 等会读)
LANG / LC_ALL locale;排查乱码时 LC_ALL=C
SSH_AUTH_SOCK ssh-agent 套接字
HISTSIZE / HISTFILESIZE 历史条数
PS1 主提示符

6.4 PATH

Bash
echo $PATH         # 冒号分隔目录列表
PATH=$PATH:/my/bin
export PATH

6.5 启动文件加载顺序

登录 Shell

  1. /etc/profile(全局)
  2. ~/.bash_profile / ~/.bash_login / ~/.profile(按存在顺序,读第一个)

交互非登录 Shell

  • ~/.bashrc(通常 source /etc/bashrc

非交互 Shell

  • BASH_ENV~/.bashrc(视配置而定)

持久化技巧

  • 全局:/etc/profile.d/*.sh
  • 用户:别名/函数 → ~/.bashrc;环境变量 → ~/.bash_profile~/.bashrc

cron 注意:cron 环境极简,脚本里应写 绝对路径 或脚本内 export PATH=...

6.6 数组

Bash
myarray=(one two three)
echo ${myarray[1]}
echo ${myarray[@]}     # 全部元素
echo ${#myarray[@]}    # 元素个数

评论