温馨提示×

debian env怎么传给脚本

小樊
51
2026-10-10 18:20:23
栏目: 智能运维

在 Debian(以及一般 Linux)里,“把环境(env)传给脚本”通常有以下几种常见做法,取决于你指的是环境变量还是整个运行环境。


一、传环境变量给脚本

1️⃣ 在命令前临时设置(只对当前命令生效)

KEY=value ./script.sh

或

KEY=value bash script.sh

脚本中读取:

echo "$KEY"

✅ 不影响当前 shell
❌ 只对这一个命令有效


2️⃣ 使用 export(对当前 shell 及其子进程生效)

export KEY=value
./script.sh

脚本中:

echo "$KEY"

✅ 子进程(脚本)可见
❌ 只在当前 shell 会话中有效


3️⃣ 使用 env 命令(更规范)

env KEY=value ./script.sh

也可以清空环境再传:

env -i PATH=/usr/bin KEY=value ./script.sh

4️⃣ 从文件加载环境(推荐用于配置)

set -a
source .env
set +a
./script.sh

.env 示例:

DB_HOST=localhost
DB_USER=root

二、让脚本“继承”当前环境

脚本第一行通常是:

#!/bin/bash

只要不显式清空环境(env -i 或 unset),脚本会自动继承父 shell 的所有环境变量。


三、systemd 服务中传 env(Debian 常见)

方式 1:service 文件里

[Service]
Environment=KEY=value
EnvironmentFile=/etc/default/myservice
ExecStart=/opt/myscript.sh

方式 2:/etc/environment(全局)

KEY=value

⚠️ 只对登录会话和新进程生效


四、Docker / 容器环境(补充)

docker run -e KEY=value image ./script.sh

或在 Dockerfile:

ENV KEY=value

五、调试技巧

查看脚本能看到的环境:

env

或

printenv

在脚本中:

echo "KEY=$KEY"

如果你能具体说一下:

  • 是 shell 脚本 / systemd / cron / docker
  • 是 单个变量还是整套环境

我可以给你更精确的写法。

0 踩