当我进入贝壳
echo $demoPath
它会打印出来
/usr/local/demo
如何在 makefile 中获得这个变量 $demoPath的值?
$demoPath
如果你输出了环境变量:
export demoPath=/usr/local/demo
您可以简单地在 makefile中通过名称引用它(make导入您设置的所有环境变量) :
makefile
make
DEMOPATH = ${demoPath} # Or $(demoPath) if you prefer.
如果您还没有导出环境变量,那么在您导出它之前它是不可访问的,或者除非您在命令行上明确地传递它:
make DEMOPATH="${demoPath}" …
如果您使用的是 C shell 派生函数,请用 setenv demoPath /usr/local/demo代替 export命令。
setenv demoPath /usr/local/demo
export
all: echo ${PATH}
或者仅为一个命令更改 PATH:
all: PATH=/my/path:${PATH} cmd
对于那些想要一些官方文件来证实这种行为的人来说
Make 中的变量可以来自运行 make 的环境。 每个环境变量开始的时候都会看到 转换为具有相同名称和值的 make 变量。 但是,是在 makefile 中显式赋值,还是使用命令赋值 参数,则重写环境。(如果指定了“-e”标志, 然后环境中的值覆盖 makefile 中的赋值。
Https://www.gnu.org/software/make/manual/html_node/environment.html
如果在同一个脚本中导出变量,则需要使用两个 $$而不是 $, 如果你的 马克菲尔是这样的:
target: . ./init.sh; \ echo ${HOMEPATH}:$${FOO};
在 进去,嘘脚本中导出变量 FOO
$ cat ./init.sh #!/bin/bash export FOO=foo:
这样,当你运行 make target 脚本运行之前定义的 env 变量 归途将只使用一个 $来显示,但是在你的 make 文件中执行的 进去,嘘脚本中导出的 env 变量 FOO将需要 $$来显示
如果您的 .env文件位于相同的目录中,您可以使用 include .env语句:
.env
include .env
。 env
DEMO_PATH=/usr/local/demo
马克菲尔
include .env demo-path: echo ${DEMO_PATH}
继续读