将环境变量嵌入从配置脚本生成的可执行文件中

问题描述

我可以使用configure脚本在可执行文件中嵌入一些环境变量,以便在启动该可执行文件自动设置某些特定的环境变量。

例如: 当我们启动python3可执行文件时,PYTHONPATH自动设置。或在启动xyz.exe时设置XYZ变量。

解决方法

简单的答案是否定的。通常,您不能直接修改二进制可执行文件,也不能根据正在运行的特定可执行文件设置环境变量。许多工具和程序都具有全面的命令行选项,可让您指定其运行方式,因此请确保您仔细阅读文档以确保没有预定义的方式来执行所需的操作。话虽如此,您可以通过一些解决方法来复制此功能。

一种解决方案是显式export所有环境变量,以便始终在运行可执行文件时定义它们。当然,这将导致设置许多环境变量,而不能保证将使用它们。

如果要最大程度减少在任何给定时间设置的环境变量的数量,还可以编写一个别名或函数,以便在运行可执行文件之前设置环境变量。请谨慎使用不会与PATH上的现有可执行文件冲突的名称。该解决方案更接近于您要查找的内容,因为环境变量仅在执行之前和之后出现。

python3env() {
    export PYTHONPATH=/some/path
    python3
    unsert YOOT
}

alias python3env="export PYTHONPATH /some/path;python3;unset YOOT"

当然,这两个示例都会使您的Shell启动配置混乱,并且可能导致设置了许多环境变量,而不能保证它们会被使用。