Omn*_*ent 8 centos environment-variables
我正在为命令设置某些环境变量pyspark
。当我设置变量/etc/environment
并获取它时,它不起作用。但是,当我在命令行中设置它们时,它们确实可以工作,但当然仅适用于本次会话。我的目的是全局设置它们,这样即使我重新打开会话我也可以输入pyspark
在 /etc/environment 中设置
[root@localhost ~]# more /etc/environment
[root@localhost ~]# echo "export SPARK_HOME=/srv/spark" >> /etc/environment
[root@localhost ~]# echo "export PATH="$SPARK_HOME"/bin:"$PATH >> /etc/environment
[root@localhost ~]# echo "export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk" >> /etc/environment
[root@localhost ~]# source /etc/environment
[root@localhost ~]# pyspark --version
-bash: pyspark: command not found
Run Code Online (Sandbox Code Playgroud)
命令行设置
[root@localhost ~]# export SPARK_HOME=/srv/spark
[root@localhost ~]# export PATH=$SPARK_HOME/bin:$PATH
[root@localhost ~]# export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk
[root@localhost ~]# pyspark --version
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 1.6.1
/_/
Type --help for more information.
Run Code Online (Sandbox Code Playgroud)
ilk*_*chu 14
将export SPARK_HOME=...
etc. 命令放在 shell 的启动文件中。使用 bash,这将是~/.profile
或~/.bash_profile
。
在 Linux 上,/etc/environment
通常pam_env.so
在登录期间被读取,并且它不支持扩展现有变量,因此设置PATH=$PATH:/something
将导致文本字符串$PATH
出现在您的PATH
. 这不是你想要的。(参见例如this和this,也为了好玩这个。)
此外,设置PATH
in/etc/environment
可能不起作用,因为 shell 的全局启动脚本可能会重写它们。(默认情况下,它们在 Debian 上执行,在我手头的旧 CentOS 上,启动脚本似乎只在PATH
.
如果您的系统不使用pam_env.so
,而您只是手动获取脚本,那么这些考虑当然无关紧要。但看起来它至少被几个 Linux 发行版广泛使用,所以使用另一个文件名可能是个好主意。
(因为这与其他答案所说的完全相反,我在旧的 CentOS 上对其进行了测试。)
我把以下内容/etc/environment
:
export FOO1=bar
export FOO2=foo:$FOO
Run Code Online (Sandbox Code Playgroud)
再次登录后,set | grep FOO
显示:
FOO1=bar
FOO2='foo:$FOO'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
48297 次 |
最近记录: |