PATH:命令查找的白名单
$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/app/.local/bin
$ which java # 命令到底在哪(找到 = PATH 里有;找不到 = 不在)
$ type ll # 区分:是命令、别名还是函数你敲下任何命令,shell 只按 PATH 里列出的目录顺序去找同名的可执行文件。「command not found」的真相只有一个:命令所在目录不在 PATH 里。
PATH 时灵时不灵,是配置位置不对
# 临时生效:只活在当前终端,关窗就没
$ export JAVA_HOME=/opt/jdk
$ export PATH=$JAVA_HOME/bin:$PATH # 注意:用冒号拼接,$PATH 要带上
# 永久生效:写进配置文件
$ echo "export PATH=/opt/jdk/bin:$PATH" >> ~/.bashrc
$ source ~/.bashrc # 让当前终端立刻读到新配置(否则下次开窗才生效)配置文件分工:~/.bashrc 管你自己(个人别名、PATH),/etc/profile 管全机(所有用户的公共配置)。「时灵时不灵」经典现场:手动 export 过所以灵,换了个终端或服务器重启就失灵——因为只做了临时,没落盘。
alias:把长命令缩成三个字母
# 写进 ~/.bashrc
alias ll='ls -lah' # 最经典的补齐
alias grep='grep --color=auto' # 命中高亮
alias ..='cd ..'
alias logs='tail -f /var/log/app/app.log' # 一词盯日志
alias bak='cp $1 $1.bak' # 顺手备份alias 只对交互式终端生效,shell 脚本里不认别名——脚本里请写完整命令。
常用环境变量速查
| 变量 | 含义 | 后端场景 |
|---|---|---|
| PATH | 命令查找目录 | 配 JDK/Maven |
| JAVA_HOME | JDK 根目录 | 很多中间件启动脚本要读它 |
| LANG | 语言与编码 | 中文乱码先查它(zh_CN.UTF-8) |
| HOME / USER | 家目录 / 当前用户 | 脚本里判断身份 |
| PS1 | 提示符样式 | 把主机名+路径显示全 |
排查口诀:乱码查 LANG、找不到命令查 PATH、服务读不到变量查它自己的启动环境(systemd 服务的环境变量要写进 unit 文件的 Environment=)。下一篇:crontab——定时任务的五段式怎么写,以及为什么你写的 cron 总不跑。
评论 (0)