You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Liquidsoap中环境变量无法取值问题求助

问题:Liquidsoap无法读取/etc/environment中定义的环境变量

花费一整晚尝试让Liquidsoap读取环境变量,但返回结果始终为空。

代码示例

Liquidsoap脚本中的测试代码:

log("Variable SOURCE_PASSW: " ^ getenv("SOURCE_PASSW"))
log("Variable PASSWORD_DJ: " ^ getenv("PASSWORD_DJ"))
log("Variable PASSWORD_ADMIN: " ^ getenv("PASSWORD_ADMIN"))

日志输出:

2023/08/22 09:40:25 [lang:3] Variable SOURCE_PASSW: 
2023/08/22 09:40:25 [lang:3] Variable PASSWORD_DJ: 
2023/08/22 09:40:25 [lang:3] Variable PASSWORD_ADMIN: 

环境变量配置

已在/etc/environment中定义相关变量:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
TELNET_USERNAME=client_metadata
TELNET_PASSWORD=985421
ADMIN_ICECAST=admin
PASSWORD_ADMIN=9632541
PASSWORD_DJ=20548798
SOURCE_PASSW=05897445
RELAY_PASSW=635478

控制台验证

在Ubuntu 22.04的SSH控制台中变量可正常读取:

icecast2@ip-17x-xx-xx-xxx:~/liquidsoap-daemon/script$ echo $PASSWORD_ADMIN
9632541

版本信息

  • Icecast版本:2.4.4
  • Liquidsoap版本:2.1.4(通过OCaml Package Manager(opam)安装)
  • 系统:Ubuntu 22.04

解决方法

1. 若Liquidsoap以systemd服务运行

/etc/environment中的变量不会自动传递给systemd服务进程,需手动配置:

  • 编辑Liquidsoap的systemd服务文件(如/etc/systemd/system/liquidsoap.service)
  • 在[Service]段添加环境变量加载配置,二选一即可:
    • 加载整个/etc/environment文件:
      [Service]
      EnvironmentFile=/etc/environment
      
    • 单独指定需要的变量:
      [Service]
      Environment="PASSWORD_ADMIN=9632541"
      Environment="PASSWORD_DJ=20548798"
      Environment="SOURCE_PASSW=05897445"
      
  • 重新加载systemd配置并重启服务:
    sudo systemctl daemon-reload
    sudo systemctl restart liquidsoap
    

2. 若手动运行Liquidsoap脚本

非交互式shell默认不会读取/etc/environment,需先加载变量再运行脚本:

source /etc/environment && liquidsoap your_script.liq

也可将变量添加到用户的~/.bashrc或~/.profile中,确保shell启动时自动加载。

3. 解决opam环境的变量隔离问题

opam创建的独立环境可能过滤系统变量,启动前需确保导入系统环境:

eval $(opam env) && source /etc/environment && liquidsoap your_script.liq

或修改~/.opam/config中的env相关设置,允许传递系统环境变量。

验证工具

可在Liquidsoap脚本中打印所有环境变量,确认是否读取成功:

list.iter(fun (k,v) -> log("Env var: " ^ k ^ " = " ^ v)) (environment())

内容的提问来源于stack exchange,提问作者Juan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 20:47:17