在 Debian(以及一般 Linux)里,“把环境(env)传给脚本”通常有以下几种常见做法,取决于你指的是环境变量还是整个运行环境。
KEY=value ./script.sh
或
KEY=value bash script.sh
脚本中读取:
echo "$KEY"
✅ 不影响当前 shell
❌ 只对这一个命令有效
export(对当前 shell 及其子进程生效)export KEY=value
./script.sh
脚本中:
echo "$KEY"
✅ 子进程(脚本)可见
❌ 只在当前 shell 会话中有效
env 命令(更规范)env KEY=value ./script.sh
也可以清空环境再传:
env -i PATH=/usr/bin KEY=value ./script.sh
set -a
source .env
set +a
./script.sh
.env 示例:
DB_HOST=localhost
DB_USER=root
脚本第一行通常是:
#!/bin/bash
只要不显式清空环境(env -i 或 unset),脚本会自动继承父 shell 的所有环境变量。
[Service]
Environment=KEY=value
EnvironmentFile=/etc/default/myservice
ExecStart=/opt/myscript.sh
KEY=value
⚠️ 只对登录会话和新进程生效
docker run -e KEY=value image ./script.sh
或在 Dockerfile:
ENV KEY=value
查看脚本能看到的环境:
env
或
printenv
在脚本中:
echo "KEY=$KEY"
如果你能具体说一下:
我可以给你更精确的写法。