在 Ubuntu(或一般 Linux)里你说的 “env 为空”,通常是指下面几种情况之一。我分别解释原因和排查方法。
env 几乎没有内容/etc/profile~/.bashrc~/.profilePATH、PWD、SHLVL)# crontab 里
* * * * * env > /tmp/env.txt
你会看到 env 很少
source ~/.bashrc
或显式设置:
export PATH=/usr/local/bin:/usr/bin:/bin
env -i 或 subprocess 清空了环境env -i command 会完全清空环境变量env -i bash
env
subprocess.Popen(["env"], env={})
env -isubprocess.Popen(["env"], env=os.environ)
ubuntu:slim)默认环境极少ENV PATH=/usr/local/bin:/usr/bin:/bin
su 或 sudo 导致环境被重置su
env
很多变量没了
su 默认不保留环境sudo 也会重置部分变量su - # 模拟登录
sudo -i
有些场景 env 本来就少,例如:
# 看当前 shell 类型
echo $0
# 看 env 内容
env
# 看是不是登录 shell
shopt -q login_shell && echo login || echo non-login
如果你能告诉我:
我可以给你更精确的原因和解决办法。