【问题标题】:How to set global environment variables using shell script .sh如何使用 shell 脚本 .sh 设置全局环境变量
【发布时间】:2023-04-04 10:20:01
【问题描述】:

我有一个 .sh 文件,它在我的 shell source my_env.sh 中本地设置一些环境变量。

#!/bin/sh
echo "Setting up local environment variables"
export MY_URL="http://domain.com"
echo "Done"

这只会设置该会话的变量。这意味着我在不同会话下运行的 Python Celery 和 Supervisor 应用程序无法访问它们。我知道我可以在用户下运行它们,但我想知道是否可以在 Ubuntu 上使用上面相同的 shell 脚本设置变量,以便所有应用程序都可以全局访问它们,而不管用户或会话如何?

【问题讨论】:

    标签: python shell ubuntu environment-variables


    【解决方案1】:

    在“/etc/profile”中导出您的变量。

    注意:这将使其对任何用户的每个 shell 会话都是全局的。如果您希望为特定用户的每个会话设置此变量,请将其设置在该用户的“~/.profile”中。

    【讨论】:

    • 那么我需要在这个文件夹中添加一个文件吗?
    【解决方案2】:

    根据Ubuntu env variables doc 最好的方法是

    适用于影响整个系统(而不仅仅是特定用户)的环境变量设置文件是 /etc/environment

    这是假设您不介意为整台机器设置它们。

    【讨论】:

    • cd /etc/environment 不是 Ubuntu 14 上的目录
    • /etc/environment 不是目录而是文件。所以打开它并添加以下行:MY_URL="...."
    • 有没有办法可以执行我的 shell 脚本来将这些变量复制到那个位置?
    • 取决于你的东西是如何运行的。根据文档:“/etc/profile.d 目录中带有 .sh 扩展名的文件会在输入 bash 登录 shell 时执行(例如,从控制台或通过 ssh 登录时)”。因此,如果您从一个 shell,两者都可以,profile.d/something 也很好。但是你必须通过 ssh 或登录打开一个会话。
    • 我想更多的是运行脚本一次,它将变量添加到环境文件中,即回显
    【解决方案3】:

    如果您使用 bashrc 或 zshrc,您可以获取 shell 文件,该文件设置跨会话的环境变量或精确加载每个会话中的所有环境变量。

    source location/shell-script-sets-env.sh  
    

    zshrc 和 bashrc 在您的 $HOME 目录中可用。或 ~/.zshrc 和 ~/.bashrc。当前shell可以通过

    查看
    echo $SHELL 
    

    查看setting env permanently 以将其添加到个人资料中。

    【讨论】:

      猜你喜欢
      • 2015-04-30
      • 2010-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      • 2012-09-03
      相关资源
      最近更新 更多