如何在我的linux系统下为每个人设置环境变量?

问题描述 投票:114回答:8

我可以为所有用户提供通用的某些设置吗?

linux unix bash
8个回答
96
投票

和其他人提到的/etc/profile一样,一些Linux系统现在使用目录/etc/profile.d/;任何.sh文件都将由/etc/profile采购。将自定义环境保存在这些文件中比仅编辑/etc/profile更简洁。


37
投票

man 8 pam_env

man 5 pam_env.conf

如果所有登录服务都使用PAM,并且所有登录服务在其各自的session required pam_env.so配置文件中都有/etc/pam.d/*,那么所有登录会话都将按照pam_env配置文件中的指定设置一些环境变量。

在大多数现代Linux发行版中,默认情况下都是这样 - 只需将所需的全局环境变量添加到/etc/security/pam_env.conf即可。

无论用户的shell如何,这都有效,并且也适用于图形登录(如果xdm / kdm / gdm / entrance / ...设置如此)。


34
投票

如果你的LinuxOS有这个文件:

/etc/environment

您可以使用它为所有用户永久设置环境变量。

摘自:http://www.sysadmit.com/2016/04/linux-variables-de-entorno-permanentes.html


16
投票

令人惊讶的是,Unix和Linux实际上并没有设置全局环境变量的地方。您可以做的最好的事情是安排任何特定的shell进行特定于站点的初始化。

如果你把它放在/etc/profile中,那将解决大多数与posix兼容的shell用户的问题。对于非关键目的,这可能“足够好”。

但任何有cshtcsh shell的人都不会看到它,我不相信csh有一个全局初始化文件。


6
投票

来自bash手册页的一些有趣的摘录:

当bash作为交互式登录shell或作为具有--login选项的非交互式shell调用时,它首先从文件/etc/profile读取并执行命令(如果该文件存在)。在读取该文件后,它按顺序查找~/.bash_profile~/.bash_login~/.profile,并从存在且可读的第一个读取和执行命令。启动shell以抑制此行为时,可以使用--noprofile选项。 ... 当启动不是登录shell的交互式shell时,如果存在这些文件,bash将从/etc/bash.bashrc~/.bashrc读取并执行命令。这可以通过使用--norc选项来禁止。 --rcfile文件选项将强制bash从文件而不是/etc/bash.bashrc~/.bashrc读取和执行命令。

所以看看/etc/profile/etc/bash.bashrc,这些文件是全局设置的正确位置。在它们中加入这样的东西来设置环境变量:

export MY_VAR=xxx

4
投票

使用PAM非常好。

# modify the display PAM
$ cat /etc/security/pam_env.conf 
# BEFORE: $ export DISPLAY=:0.0 && python /var/tmp/myproject/click.py &
# AFTER : $ python $abc/click.py &
DISPLAY  DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY}
abc   DEFAULT=/var/tmp/myproject

2
投票

在Linux内核下运行的每个进程都会从其父级继承自己独特的环境。在这种情况下,父级将是shell本身(产生子shell)或“登录”程序(在典型系统上)。

由于每个进程的环境都受到保护,因此无法为每个正在运行的进程“注入”环境变量,因此即使您修改了默认的shell .rc / profile,它也不会生效,直到每个进程退出并重新加载它的启动设置。

查看/ etc /以修改任何特定shell的默认启动变量。只要意识到用户可以(并经常)在他们的个人设置中更改它们。

Unix旨在服从用户,在限制范围内。

注意:Bash不是系统中唯一的shell。请特别注意/ bin / sh符号链接实际指向的内容。在许多系统上,这实际上可能是破折号(默认情况下,没有特殊调用)POSIXLY正确。因此,您应该注意修改两个默认值,否则以/ bin / sh开头的脚本将不会继承您的全局默认值。同样,请注意避免只有bash在编辑时才能理解的语法,即avoiding bashisms


-13
投票
  1. 使用wget下载jdk
  2. 使用$来找到java路径,它会向你展示JAVA实际存储的位置,即/ usr / lib / jvm / java-8-openjdk-amd64 // bin / java
  3. 复制上面的路径,即/ usr / lib / jvm / java-8-openjdk-amd64 /
  4. 现在使用nano编辑器打开.bashrc,即nano .bashrc
  5. 在.bashrc文件中添加路径,即使用export cammand JAVA_HOME并保存文件,即导出JAVA_HOME = / usr / lib / jvm / java-8-openjdk-amd64 /并导出PATH = $ JAVA_HOME / bin:$ PATH
  6. 运行$ source~ / .bashrc
  7. $ echo $ PATH

您的路径已设置

© www.soinside.com 2019 - 2024. All rights reserved.