dez*_*dez 3 makefile environment-variables
我正在尝试导出环境变量,以便可以在父 shell MakeFile 中访问它们:
export-vars:
# extract vars from text file - remove comments - export output
export $$(cat env.txt | grep -v ^# | xargs)
Run Code Online (Sandbox Code Playgroud)
然后当我跑步时:
$ make export-vars
$ echo $SOME_VAR_EXPORTED_FROM_MAKEFILE
Run Code Online (Sandbox Code Playgroud)
我期望文本中的变量被设置为环境变量。
如何在目标/规则内执行此操作有任何帮助吗?
您不能使用 makefile 或单独的 shell 脚本来完成此操作。当您运行 make 或运行 shell 脚本时,它会创建一个新进程。当该进程退出时,对该进程的环境所做的任何更改都将被丢弃。(在类 UNIX 系统中)进程不可能修改其父进程的环境。
您唯一可以做的就是编写一个 shell 函数,该函数在您正在运行的 shell 进程中调用(显示您的提示符等),或者使用您源的脚本,而不是运行:这将导致脚本在同一个 shell 进程中运行而不是创建一个新进程。
所以你可以在你的或类似的函数中编写一个 shell 函数,~/.bashrc如下所示:
setvars () { export $(grep -v ^# env.txt | xargs); }
Run Code Online (Sandbox Code Playgroud)
或者您可以编写一个单独的 shell 脚本,但无法运行它,您必须获取它(该.命令获取脚本而不是运行它):
. set-my-vars.sh
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10642 次 |
| 最近记录: |