【发布时间】:2019-08-08 00:35:50
【问题描述】:
生成文件:
XDG_CONFIG_HOME?=$HOME/.config
我想将该行转换为 Plan9 mkfile 语法。
我试过了
XDG_CONFIG_HOME=`{if(~ $XDG_CONFIG_HOME '') echo $HOME/.config; if not echo $XDG_CONFIG_HOME}
它有效,但它很丑。有什么选择吗?
【问题讨论】:
生成文件:
XDG_CONFIG_HOME?=$HOME/.config
我想将该行转换为 Plan9 mkfile 语法。
我试过了
XDG_CONFIG_HOME=`{if(~ $XDG_CONFIG_HOME '') echo $HOME/.config; if not echo $XDG_CONFIG_HOME}
它有效,但它很丑。有什么选择吗?
【问题讨论】:
mk(1) 不提供这种内置方式来定义变量,只有当它们不是非空的环境变量时。实际上,贝尔实验室的任何 make(1) 和 POSIX make(1) 都没有提供这样的方法,?= 语法只是 GNU 扩展。
您通常会在您的mkfile 中正常设置变量:
XDG_CONFIG_HOME = $home/.config
并覆盖mk(1)命令中的变量:
; mk 'XDG_CONFIG_HOME='^$home^'/cfg'
【讨论】:
在shell中,“:-”用于将变量设置为默认值,以防变量没有值:
XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-$HOME/.config}
【讨论】: