1. 临时(仅当前 shell 会话,关闭终端失效)
export LAN_SECRET_KEY=”MY_SUPER_SECRET_KEY”
export DOUBAO_API_KEY=”sk-xxxxx”
查看:`echo $LAN_SECRET_KEY` 或`env | grep LAN`
2. 单条命令临时生效(不污染当前 shell)
LAN_SECRET_KEY=”MY_SUPER_SECRET_KEY” python -m uvicorn app.main:app
# 或 systemd 启动服务时一行搞定
3. 永久 – 当前用户(推荐用于个人开发/部署)
写入`~/.bashrc` (bash)或`~/.zshrc` (zsh):
echo ‘export LAN_SECRET_KEY=”MY_SUPER_SECRET_KEY”‘ >> ~/.bashrc
echo ‘export DOUBAO_API_KEY=”sk-xxxxx”‘ >> ~/.bashrc
source ~/.bashrc # 立即生效,否则要重开终端
4. 永久 – 全局所有用户(生产服务器慎用)
sudo vim /etc/environment
# 写入(注意此文件不能用 export,且不用引号包裹值)
LAN_SECRET_KEY=MY_SUPER_SECRET_KEY
或`/etc/profile.d/xxx.sh` (支持 export,更灵活):
sudo tee /etc/profile.d/lan_app.sh <<EOF
export LAN_SECRET_KEY=”MY_SUPER_SECRET_KEY”
export DOUBAO_API_KEY=”sk-xxxxx”
EOF
source /etc/profile.d/lan_app.sh
5. systemd 服务专用(生产部署推荐)
这与 FastAPI 项目最相关 ——
服务由 systemd 托管时,shell 的`.bashrc` 不会加载,需要在 service unit 里指定:
# /etc/systemd/system/lan_app.service
[Service]
Environment=”LAN_SECRET_KEY=MY_SUPER_SECRET_KEY”
Environment=”DOUBAO_API_KEY=sk-xxxxx”
# 或读一个文件
EnvironmentFile=/etc/lan_app.env
ExecStart=/path/to/uvicorn app.main:app –host 0.0.0.0 –port 8000
`/etc/lan_app.env` 格式(不要 export,不要引号):
LAN_SECRET_KEY=MY_SUPER_SECRET_KEY
DOUBAO_API_KEY=sk-xxxxx
然后:
sudo systemctl daemon-reload
sudo systemctl restart lan_app