gpt4 book ai didi

linux - makefile 可以更新调用环境吗?

转载 作者:IT王子 更新时间:2023-10-29 00:34:07 24 4
gpt4 key购买 nike

是否可以从 makefile 更新环境?我希望能够创建一个目标来为它们设置客户端环境变量。像这样:

AXIS2_HOME ?= /usr/local/axis2-1.4.1
JAVA_HOME ?= /usr/java/latest
CLASSPATH := foo foo

setenv:
export AXIS2_HOME
export JAVA_HOME
export CLASSPATH

这样客户就可以简单地做:

make setenv all
java MainClass

并且无需他们自己为 java 执行设置类路径就可以运行。

或者我想以错误的方式做到这一点并且有更好的方法?

最佳答案

不,您不能通过这种方式更新调用进程中的环境。一般来说,子进程不能修改父进程的环境。一个值得注意的异常(exception)是 Windows 上的批处理文件,当从 cmd shell 运行时。根据您展示的示例,我猜您没有在 Windows 上运行。

通常,您尝试完成的任务是通过设置环境然后调用预期进程的 shell 脚本完成的。例如,您可以像这样编写一个 go.sh 脚本:

!#/bin/sh
AXIS2_HOME=/usr/local/axix2-1.4.1
JAVA_HOME=/usr/java/latest
CLASSPATH=foo foo
export AXIS2_HOME
export JAVA_HOME
export CLASSPATH
java MainClass

使 go.sh 可执行,现在您可以将您的应用程序作为 ./go.sh 运行。如果愿意,您也可以使脚本更精细——例如,您可能希望将“MainClass”作为脚本的参数,而不是对其进行硬编码。

关于linux - makefile 可以更新调用环境吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/676060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com