在后缀管道上导出 PATH 变量

在后缀管道上导出 PATH 变量

我正在使用自定义传输来处理收到的邮件。它用于订阅和取消订阅某个频道。

twailer   unix  -       n       n       -       -       pipe
  flags=FR user=twailer argv=/home/twailer/twailer/bin/twailer

twailer 二进制文件是一个 Javascript 文件,应该用 node 进行解析,因此我添加了 shebang

#!/usr/bin/env node

但那行不通,因为$PATH管道命令没有导出。根据手册,我可以在export_environment中指定要传入设置的环境变量main.cf,所以我也这样做了。

export_environment = TZ MAIL_CONFIG LANG PATH=/usr/local/bin:/usr/bin:/bin

但它仍然不起作用。因此,我用一个将当前输出$PATH到 stderr 的 shell 脚本替换了我的二进制文件,然后我得到了

Command output: /usr/bin:/bin

这显然不是我配置的。

关于如何传递 $PATH 变量有什么想法吗?

答案1

不要试图让 pipe(8) 执行它不支持的操作,而是考虑适应它所支持的操作:

twailer   unix  -       n       n       -       -       pipe
  flags=FR user=twailer argv="/usr/bin/node /home/twailer/twailer/bin/twailer"

将“/usr/bin/node”替换为二进制文件的真实路径。

至于你在 PATH 中遇到的黑客问题:如记录所述,

argv=command...(必需)要执行的命令。这必须指定为最后一个命令属性。该命令直接执行,即 无需通过 shell 命令解释器解释 shell 元字符。

相关内容