【问题标题】:How to programmatically set a permanent environment variable in Linux?如何以编程方式在 Linux 中设置永久环境变量?
【发布时间】:2011-02-22 22:24:25
【问题描述】:

我正在为一些软件编写一个小安装脚本。它所做的只是解压目标 tar,然后我想永久设置一些环境变量——主要是解压库的位置并更新 $PATH。我是否需要以编程方式编辑.bashrc 文件,例如在末尾添加适当的条目,还是有其他方法?什么是标准做法?

编辑:该包包含许多运行脚本(20+),它们都使用这些命名的环境变量,所以我需要以某种方式设置它们(已选择变量名称以便发生冲突极不可能)

【问题讨论】:

    标签: linux installation environment-variables bash


    【解决方案1】:

    符合 LSB(参见 spec)的做法是在 /etc/profile.d/ 文件夹中创建一个 shell 脚本。

    以您的应用程序命名(并确保名称是唯一的),确保名称以.sh 结尾(您可能还想为其他shell 添加脚本)和export 您需要的变量在脚本中。该目录中的所有*.sh 脚本都会在用户登录时读取——同时/etc/profilesourced。

    请注意,bash 并未强制执行此操作;相反,这是一种协议。

    【讨论】:

    • 好的,这看起来可能是解决方案。大概安装程序需要以 root 身份运行才能在此处编写可执行脚本。
    • 服务是否也读取此脚本?例如 apache 或 tomcat?
    【解决方案2】:

    您还可以生成和安装设置这些变量的脚本。然后,您包的用户获取该脚本或将其内容复制到他们自己的 shell 初始化文件中。

    【讨论】:

    • 或者包装脚本在已知名称和位置调用 var-setting 脚本,然后调用初始可执行文件。
    【解决方案3】:

    标准做法是安装到已经在路径和标准库目录中的目录中,因此无需更新这些变量。

    更新 .bashrc 有点容易失败,除此之外;如果用户使用不同的文件或外壳怎么办?

    【讨论】:

    • +1 正确。如果您尝试为他们编辑他们的 .bashrc,用户会非常不高兴。如果您想安装到非标准目录 - 或者认为您的用户没有权限 - 让他们指定 --install-dir=mydir 并告诉他们需要添加到他们的环境中的内容。 golang.org/doc/install.html有一个很好的例子
    • 是的,我认为编辑 .bashrc 会因多种原因而令人怀疑。问题是该软件包含许多脚本(20+),它们都使用这些命名的环境变量 - 所以我需要以某种方式设置它们。
    • 一种方法是在调用脚本的包装脚本中获取它们。
    猜你喜欢
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多