如何在我的linux系统下为每个人设置环境variables?
我可以为我的所有用户设置一些通用的设置吗?
和其他人提到的/etc/profile
,一些Linux系统现在使用一个目录/etc/profile.d/
; 那里的任何.sh
文件将由/etc/profile
。 在这些文件中保留自定义环境的东西比编辑/etc/profile
要稍微简单一些。
男子8 pam_env
男人5 pam_env.conf
如果所有login服务都使用PAM ,并且所有login服务都在其各自的/etc/pam.d/*
configuration文件中具有session required pam_env.so
,则所有login会话都将设置一些环境variables,如pam_env
的configuration文件中所指定。
在大多数现代Linux发行版中,默认情况下都是这样 – 只需将所需的全局环境variables添加到/etc/security/pam_env.conf
。
不pipe用户的shell是什么,它都可以工作,也可以用于graphicslogin(如果xdm / kdm / gdm /入口/ …是这样设置的)。
如果你的LinuxOS有这个文件:
/etc/environment
您可以使用它为所有用户永久设置环境variables。
摘自: http : //www.sysadmit.com/2016/04/linux-variables-de-entorno-permanentes.html
令人惊讶的是,Unix和Linux实际上没有地方设置全局环境variables。 你可以做的最好的是安排任何特定的shell有一个站点特定的初始化。
如果你把它放在/etc/profile
,那么对于大多数兼容posix的shell用户来说,这将是很重要的。 对于非关键目的来说,这可能是“足够好”的。
但是任何有csh
或tcsh
shell的人都不会看到它,我不相信csh
有一个全局初始化文件。
一些有趣的摘录从bash manpage:
当bash作为交互式loginshell或者作为具有
--login
选项的非交互式shell调用时,它首先从文件/etc/profile
读取和执行命令(如果该文件存在)。 读取该文件后,它将按照该顺序查找~/.bash_profile
,~/.bash_login
和~/.profile
,并从第一个存在并读取的第一个中读取和执行命令。 当shell开始禁止这种行为时,可以使用--noprofile
选项。
…
当一个不是loginshell的交互式shell被启动时,如果这些文件存在,bash将从/etc/bash.bashrc
和~/.bashrc
读取和执行命令。 这可以通过使用--norc
选项来禁止。--rcfile
文件选项将强制bash从文件读取和执行命令,而不是/etc/bash.bashrc
和~/.bashrc
。
所以看看/etc/profile
或/etc/bash.bashrc
,这些文件是全局设置的正确位置。 把这样的东西放在他们身上来build立一个环境variables:
export MY_VAR=xxx
使用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
在Linux内核下运行的每个进程都会接收到它自己的独特环境,并从其父进程inheritance。 在这种情况下,父代会是一个shell本身(产生一个子shell),或者是“login”程序(在一个典型的系统上)。
由于每个进程的环境都受到保护,因此无法为每个正在运行的进程“注入”一个环境variables,因此,即使修改了默认shell .rc / profile,在每个进程退出并重新加载之前也不会生效其启动设置。
查看/ etc /以修改任何特定shell的默认启动variables。 只要意识到用户可以(并且经常)在他们的个人设置中改变他们。
Unix被devise为服从用户,在一定范围内。
注意 :Bash不是你的系统上唯一的 shell。 请注意/ bin / sh符号链接实际指向的内容。 在许多系统上,这实际上可能是破折号 (默认情况下,没有特别的调用)POSIXLY正确。 因此,您应该小心修改这两个默认值,否则以/ bin / sh开头的脚本将不会inheritance您的全局默认值。 同样,注意避免只有bash可以理解编辑时才能使用的语法,也就是avoiding bashisms
。
如果你正在使用ubuntu,input〜/ .bashrc这个命令(如果你使用的是gedit,你可以键入gedit〜/ .bashrc ),然后在所有terminal会话中写入你想要保留的环境variables,例如export variable =“2015”