Linux 如何跨会话保留环境变量
我已经提到这一点 我想设置几个变量作为全局/系统级环境变量,我想初始化一次,并在登录时随时可用。我不想一次又一次地重新分配他们 下面是我所做的 步骤-1(在命令行终端中) 步骤-2(在.bashrc文件中) 步骤-2a刷新/重新加载bashrc文件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
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