如何使用 shell script .sh 设置全局环境变量

How to set global environment variables using shell script .sh

我有一个 .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 脚本设置变量,以便所有应用程序都可以全局访问它们无论用户还是会话?

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

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

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

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

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

查看
echo $SHELL 

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

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

A suitable file for environment variable settings that affect the system as a whole (rather than just a particular user) is /etc/environment

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