Linux 如何跨会话保留环境变量

Linux 如何跨会话保留环境变量,linux,bash,shell,environment-variables,command-line-arguments,Linux,Bash,Shell,Environment Variables,Command Line Arguments,我已经提到这一点 我想设置几个变量作为全局/系统级环境变量,我想初始化一次,并在登录时随时可用。我不想一次又一次地重新分配他们 下面是我所做的 步骤-1(在命令行终端中) 步骤-2(在.bashrc文件中) 步骤-2a刷新/重新加载bashrc文件 export SPARK_HOME="/usr/spark" export PATH="$PATH:/usr/spark/bin" export PYTHONPATH="$SPARK_HOME/pyt

我已经提到这一点

我想设置几个变量作为全局/系统级环境变量,我想初始化一次,并在登录时随时可用。我不想一次又一次地重新分配他们

下面是我所做的

步骤-1(在命令行终端中)

步骤-2(在.bashrc文件中)

步骤-2a刷新/重新加载bashrc文件

export SPARK_HOME="/usr/spark"
export PATH="$PATH:/usr/spark/bin"
export PYTHONPATH="$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.7-src.zip:$PYTHONPATH"
export PATH="$SPARK_HOME/python:$PATH"
source .bashrc
上述两个步骤不起作用。这意味着一旦我注销并登录,当我发出
printenv
命令时,我就看不到它们了

所以,我想根据这么多帖子导航到下面的文件夹

cd /etc/environment -what should I do in this file?

cd /etc/profile - what should I do in this file?

cd /etc/profile.d/ - I see 4 files here as shown below (don't know what to do from here)

apps-bin-path.sh  bash_completion.sh  cedilla-portuguese.sh  gtk-accessibility.sh  vte-2.91.sh
我的配置文件如下所示

if [ "$PS1" ]; then
  if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi
如何设置这些环境变量?无论我打开多少终端,我都希望拥有并使用它们。

阅读

/etc/environment-在这个文件中我应该做什么

这是一个系统范围的配置文件,因此系统上的所有用户都使用它。您需要“root”权限才能编辑它

/etc/profile-在这个文件中我应该做什么

这是您的个人shell初始化脚本

另外,你不是唯一一个问过Sparky这个问题的人。
请参阅。

当您注销时,它们当然会丢失。但是当shell是交互式的时,~/.bashrc应该是源代码。我建议您暂时在.bashrc中放置一个
set-x
作为第一条语句,并打开一个新的shell。您将获得大量的输出,但您将看到执行了哪些语句。请同时发布您的bash版本(
echo$bash\u version
)。您好@user1934428-我不能永远设置这个变量吗?这意味着我将每天使用它们。如何在我的个人资料中设置此项?因此,每次我登录时,无论我打开了多少终端,它都是可用的?@user1934428-用
bash
profile
文件详细信息更新帖子。一件事是,我能够看到
PYENV_ROOT
PATH
If
clauseAn环境变量之前定义,根据定义,它属于一个进程。当进程结束时,环境也随之消亡。它只是由子进程继承的。但您当然可以为新流程提供一个新的、合适的环境。一个目的,为什么bash在启动时自动处理某些文件,是为了允许您设置您的环境。是的,谢谢,我现在明白了。所以我想为SPARK设置我的环境。因此,我要求列出的变量在启动时可用。我只为SPARK使用服务器。这就是我们服务器的用途。。
if [ "$PS1" ]; then
  if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi