1、问题:
在Linux服务器上,我使用自己的账号为Elasticsearch的路径设置了环境变量,但是切换到其他用户时,发现环境变量未生效,无法使用。查了一下,原来 Linux 系统中不同用户设置的环境变量不是通用的,因此其他用户无法使用我设置的环境变量。可以通过设置全局环境变量来解决这一问题。
在 Linux 系统中,不同用户设置的环境变量通常是独立的,即它们不会相互影响。每个用户登录时都会有自己的环境,包括独立的环境变量设置。当用户登录时,系统会使用用户的个人配置文件来设置其环境。两个常见的配置文件是:
bashrc(对于 Bash shell): 用户每次登录到一个交互式 Bash shell 时都会执行此文件。
bash_profile(对于 Bash shell): 用户登录时执行一次,用于设置全局环境变量和一些登录时的初始化工作。
这两个文件通常位于用户的家目录下。用户可以编辑这些文件来添加、修改或删除环境变量。
尽管每个用户有独立的环境变量设置,但有时也存在全局环境变量,这会影响所有用户。这些全局环境变量通常位于系统范围的配置文件中,例如:
/etc/environment: 此文件包含全局环境变量,对所有用户都生效。
/etc/profile: 此文件在用户登录时执行,可用于设置全局环境变量。
如果管理员在这些全局配置文件中设置了环境变量,它们将对系统上的所有用户生效。用户的个人配置文件则更适合用户特定的定制。
2、为单个用户设置Elasticsearch环境变量
编辑用户的 ~/.bashrc 或 ~/.bash_profile 文件,然后在文件的末尾添加以下行:
export PATH=$PATH:/usr/local/elasticsearch-8.10.2/bin
export ELASTICSEARCH_HOME=/usr/local/elasticsearch-8.10.2
其中,第一行是将/usr/local/elasticsearch-8.10.2/bin 目录添加到系统的 PATH 环境变量中,使得你可以在终端中直接运行 Elasticsearch 相关的命令,而不需要提供完整的路径。
保存文件并退出。然后,在终端中执行以下命令以使更改生效:
source ~/.bashrc # 或者 source ~/.bash_profile,根据使用的配置文件
上述配置将把 /usr/local/elasticsearch-8.10.2/bin 添加到 PATH 环境变量中,并定义一个名为 ELASTICSEARCH_HOME 的变量,其值为 /usr/local/elasticsearch-8.10.2。
3、为所有用户设置Elasticsearch环境变量
如果想让配置对所有用户生效,可以将环境变量添加到 /etc/environment 文件中。以管理员身份编辑此文件:
sudo vi /etc/environment
在文件中添加以下行:
PATH=$PATH:/usr/local/elasticsearch-8.10.2/bin
ELASTICSEARCH_HOME=/usr/local/elasticsearch-8.10.2
保存文件并退出。更改会在下次用户登录时生效,或者可以重新启动系统或重新加载 shell 配置文件。