连载中 16/20

环境变量与 shell 配置:PATH 时灵时不灵的真相

2026-10-20 · 36 阅读 · 0 评论 · 0 赞

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_HOMEJDK 根目录很多中间件启动脚本要读它
LANG语言与编码中文乱码先查它(zh_CN.UTF-8)
HOME / USER家目录 / 当前用户脚本里判断身份
PS1提示符样式把主机名+路径显示全

排查口诀:乱码查 LANG、找不到命令查 PATH、服务读不到变量查它自己的启动环境(systemd 服务的环境变量要写进 unit 文件的 Environment=)。下一篇:crontab——定时任务的五段式怎么写,以及为什么你写的 cron 总不跑。

☕
503

10 年全栈工程师 · 503咖啡馆主理人

#环境变量#PATH#alias#bashrc#shell配置

评论 (0)

热门推荐

连载中 11/22

主从搭建实操:从零配出一主两从

光讲原理不过瘾?手把手搭一主两从:my.cnf 六个参数、复制账号、GTID、CHANGE REPLICATION SOURCE TO、SHOW REPLICA STATUS 验收,附翻车排查清单。

#MySQL#主从复制#GTID#主从搭建#高可用
2026-05-07 · 10114 阅读 · 0 评论 · 0 赞
连载中 16/22

连接池:HikariCP 参数与连接风暴

连接池不是越大越好:8 核机器配 1000 连接反而更慢的数学原理,HikariCP 四个必调参数,maxLifetime 与 wait_timeout 的隐形陷阱。

#MySQL#连接池#HikariCP#maxLifetime#连接风暴
2026-05-10 · 9877 阅读 · 0 评论 · 0 赞
连载中 4/16

缓存穿透:恶意 ID 打穿 MySQL 的四道防线

请求的数据在缓存和数据库里都不存在时,缓存形同虚设。聊聊参数校验、空值缓存、布隆过滤器、限流熔断四道防线的原理与组合打法。

#Redis#缓存穿透#布隆过滤器#高可用
2026-05-16 · 9307 阅读 · 21 评论 · 287 赞