如何跨会话保留环境变量

时间:2020-09-15 05:39:51

标签: linux bash shell environment-variables command-line-arguments

我已经提到了postpost

我想将一些变量设置为全局/系统级环境变量,我想对其进行一次初始化并在我每次登录时都可以使用。我不想一次又一次地重新分配他们。

下面是我所做的。

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

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"

步骤-2(在.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"

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

source .bashrc

以上两个步骤均无效。意思是我注销并登录后,发出printenv命令时,我看不到它们

所以,我想到了根据SO帖子导航到以下文件夹

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

如何为永恒设置这些环境变量?无论我打开多少个终端,我都希望拥有并使用它们。

1 个答案:

答案 0 :(得分:0)

阅读this post

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

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

/ etc / profile-我应该在此文件中做什么?

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

此外,您不是唯一一个曾经问过关于Sparky的问题的人。 参见this post