【发布时间】:2022-01-14 02:46:28
【问题描述】:
英特尔的 OneAPI 发行版(包括许多组件,例如 ICC)有一个名为 setvars.sh 的脚本,它检查各种东西的存在,然后运行组件的各个脚本来设置环境变量。运行并将一些内容打印到终端需要一秒钟以上的时间。
现在,我愿意运行一次,但我当然不想在每次启动 shell 时都运行它。我如何才能以它在调用之前从我的环境中添加(或删除?)的增量形式“缓存”它的结果?这样我就可以使用以下脚本获取脚本:
export PATH="whatever:$PATH"
export TBBROOT="whatever"
# etc. etc.
?
当然,如果我的系统配置发生任何变化,我需要重新运行 setvars.sh,但我可以接受。
PS - 不得不说:OneAPI 是错误命名的缩影。它是除我们之外的任何人都不会使用的、多选之一的 API。
【问题讨论】:
-
它通常如何在父shell的环境中设置vars?您是否必须
source它而不是运行它并evaling 输出?如果是前者,可能你可以在之前/之后捕获set或env的结果并进行比较以查看它设置的环境变量,并将其调整为简单的东西。set的输出包括 shell 函数,而不仅仅是环境变量,至少在 bash 中是这样。 -
@PeterCordes:你必须找到它。如果他们能生成一个你可以
eval的脚本会更好更健壮,但他们不会那样做...... :-(
标签: shell environment-variables intel icc intel-oneapi