如何在mkfile中定义变量的默认值

时间:2019-03-17 14:01:35

标签: shell plan-9 rc-shell

Makefile:

XDG_CONFIG_HOME?=$HOME/.config

我想将行转换为Plan9 mkfile语法。

我尝试过

XDG_CONFIG_HOME=`{if(~ $XDG_CONFIG_HOME '') echo $HOME/.config; if not echo $XDG_CONFIG_HOME}

它有效,但是很丑。还有其他选择吗?

2 个答案:

答案 0 :(得分:1)

mk (1)仅当变量不是非空环境变量时,才提供这种内置的变量定义方式。实际上,Bell Labs的任何 make (1)或POSIX make (1)都没有提供这种方法,?=语法只是GNU扩展名。

通常要做的是在mkfile中正常设置变量:

XDG_CONFIG_HOME = $home/.config

并覆盖 mk (1)命令中的变量:

    ; mk 'XDG_CONFIG_HOME='^$home^'/cfg'

答案 1 :(得分:0)

在外壳中,“:-”用于将变量设置为默认值,以防该变量没有值:

XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-$HOME/.config}