我可以为所有用户使用某些通用设置吗?
我可以为所有用户使用某些通用设置吗?
Answers:
就像/etc/profile
其他人提到的那样,某些Linux系统现在使用目录/etc/profile.d/
。其中的所有.sh
文件都将来自/etc/profile
。将自定义环境中的内容保留在这些文件中比仅进行编辑稍微整洁/etc/profile
。
如果您的LinuxOS具有此文件:
/etc/environment
您可以使用它为所有用户永久设置环境变量。
摘自:http : //www.sysadmit.com/2016/04/linux-variables-de-entorno-permanentes.html
如果所有登录服务都使用PAM,并且所有登录服务都session required pam_env.so
在各自的/etc/pam.d/*
配置文件中,则所有登录会话都将设置一些环境变量,如pam_env
的配置文件中所指定。
在大多数现代Linux发行版中,默认情况下就全部存在-只需将所需的全局环境变量添加到中即可/etc/security/pam_env.conf
。
无论用户使用哪种shell,它都适用,并且也适用于图形登录(如果xdm / kdm / gdm / entrance /…如此设置)。
echo foo>/home/me/bar
并重新启动(然后再次登录),则不会创建该文件。(可能有一种更优雅的测试方法,但是我想在这里发表评论之前先确定一下。)
令人惊讶的是,Unix和Linux实际上没有设置全局环境变量的位置。最好的办法是安排任何特定的Shell进行特定于站点的初始化。
如果放在中/etc/profile
,它将为大多数posix兼容的shell用户解决问题。对于非关键目的,这可能“足够好”。
但是任何带有csh
or或tcsh
shell的人都不会看到它,而且我不相信csh
拥有全局初始化文件。
/etc/environment
实际上似乎为我设置了环境变量,即使是root用户也是如此。我知道这/etc/environment
是在Amazon Linux和Ubuntu上。我没有检查是否适用于csh,tcsh或zsh。
bash联机帮助页中的一些有趣摘录:
当bash作为交互式登录shell或带有
--login
选项的非交互式shell被调用时,它首先从文件/etc/profile
(如果该文件存在)中读取并执行命令。读取文件后,它会查找~/.bash_profile
,~/.bash_login
以及~/.profile
以该顺序,并读取并从存在并且可读的第一个执行命令。--noprofile
启动外壳程序以禁止此行为时,可以使用该选项。
...
当一个交互的shell但不是登录shell启动时,bash读取并执行命令/etc/bash.bashrc
和~/.bashrc
,如果这些文件存在。使用--norc
选项可以禁止这种情况。的--rcfile
file选项将强制bash从文件而不是/etc/bash.bashrc
and中 读取和执行命令~/.bashrc
。
因此,请查看/etc/profile
或/etc/bash.bashrc
,这些文件是进行全局设置的正确位置。在它们中放入类似的内容以设置环境变量:
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内核下运行的每个进程都有其自己的,从其父级继承的独特环境。在这种情况下,父级要么是外壳程序本身(生成子外壳程序),要么是“登录”程序(在典型系统上)。
由于每个进程的环境都受到保护,因此无法向每个正在运行的进程“注入”环境变量,因此,即使您修改了默认的shell .rc /配置文件,它也不会生效,直到每个进程退出并重新加载它的启动设置。
在/ etc /中查找,以修改任何特定shell的默认启动变量。只需意识到用户可以(并且经常)在他们的个人设置中对其进行更改。
Unix旨在在一定范围内服从用户。
注意:Bash不是系统上唯一的 shell。请特别注意/ bin / sh符号链接实际指向的内容。在许多系统上,这实际上可能是破折号,这在默认情况下是正确的(默认情况下,没有特殊调用)。因此,您应注意同时修改两个默认值,否则以/ bin / sh开头的脚本将不会继承全局默认值。同样,请注意避免在编辑baka和bash时只有bash可以理解的语法avoiding bashisms
。