从Ruby访问shell数组/哈希环境变量

hm2xizp9  于 2023-06-29  发布在  Ruby
关注(0)|答案(2)|浏览(150)

Ruby的ENV机制似乎不允许访问声明为数组或关联数组(散列)的shell环境变量。(至少特定于bash shell。)但是,我在任何地方都找不到这个限制的文档。
这实际上是一个硬性的和有意的限制吗?或者实际上有一种方法可以从Ruby中访问结构化的shell环境变量?

bpsygsoo

bpsygsoo1#

我想你可以从Ruby脚本printenvenv中执行一个shell命令,并将输出管道到一个子进程来解析所有内容或你需要的内容(* 可能需要在env命令中使用'more'标志,这取决于你要找的东西和操作系统 *)。
参考文献:

tcomlyy6

tcomlyy62#

正如@Barmar所提到的(并通过他对Exporting an array in bash script的链接进行了解释),这不是Ruby的缺陷。相反,它是bash中的限制。POSIX兼容的envariables必须是字符串。额外的数组和关联数组构造(可能还有数字语义)是特定于bash的bags-on-the-side,不能直接导出。有许多方法可以尝试通过序列化来保留结构属性(参见链接),但基本的答案似乎是:“如果你想做这件事,你必须自己做。没有固定的方法可以做到这一点。”

相关问题