如何通过Augeas与Puppet为bash_profile添加export语句
用Puppet + Augeas在.bash_profile中导出环境变量
我刚好碰到过类似的问题,Shellvars这个Augeas lens其实完全支持处理export的场景,你需要的两种格式都能实现,下面给你具体的配置方法:
方式一:直接生成 export variable="value"
这种是最常用的写法,Augeas允许给变量添加export属性,只需要在你的changes数组里多添加一条设置/export的指令就行:
augeas { "bash_profile-${user}-${name}": incl => "/home/${user}/.bash_profile", lens => 'Shellvars.lns', changes => [ "set ${variable_name} '\"${literal_value}\"'", "set ${variable_name}/export 'true'", ], }
执行这个配置后,.bash_profile里就会生成:
# .bash_profile export variable="value"
方式二:分开写变量赋值和export语句
如果你需要先赋值再单独export,比如variable="value"然后export variable,可以通过添加独立的export节点来实现:
augeas { "bash_profile-${user}-${name}": incl => "/home/${user}/.bash_profile", lens => 'Shellvars.lns', changes => [ "set ${variable_name} '\"${literal_value}\"'", "set export[.='${variable_name}'] '${variable_name}'", ], }
这个配置会生成:
# .bash_profile variable="value" export variable
原理说明
Shellvars lens把环境变量的export状态作为变量节点的一个子属性来管理,当你设置${variable_name}/export 'true'时,Augeas会自动在变量声明前加上export关键字。而单独创建export节点的方式,则会生成独立的export语句,指向已经定义好的变量。
内容的提问来源于stack exchange,提问作者Simon Hardman
相关产品推荐
相关产品推荐

