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

2024-10-12 10:28:00
admin
原创
224
摘要:问题描述:我可以设置适用于所有用户的通用设置吗?解决方案 1:就像/etc/profile其他人提到的那样,一些 Linux 系统现在使用目录/etc/profile.d/;其中的任何.sh文件都将由 提供/etc/profile。将自定义环境内容保存在这些文件中比直接编辑 稍微简洁一些/etc/profil...

问题描述:

我可以设置适用于所有用户的通用设置吗?


解决方案 1:

就像/etc/profile其他人提到的那样,一些 Linux 系统现在使用目录/etc/profile.d/;其中的任何.sh文件都将由 提供/etc/profile。将自定义环境内容保存在这些文件中比直接编辑 稍微简洁一些/etc/profile

解决方案 2:

如果你的LinuxOS有这个文件:

/etc/environment

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

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

解决方案 3:

人 8 pam_env

人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/... 是这样设置的)。

解决方案 4:

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

如果您将其放入 中/etc/profile,那么大多数兼容 posix 的 shell 用户都可以使用。对于非关键用途来说,这可能“足够好”。

但是任何拥有cshtcshshell 的人都不会看到它,并且我不相信csh有一个全局初始化文件。

解决方案 5:

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

当 bash 作为交互式登录 shell 调用时,或者作为带有--login选项的非交互式 shell 调用时,它首先从文件 读取并执行命令/etc/profile(如果该文件存在)。读取该文件后,它会按顺序查找~/.bash_profile
~/.bash_login~/.profile,并从第一个存在且可读的文件中读取并执行命令。--noprofile可以在启动 shell 时使用该选项来抑制此行为。...

启动非登录 shell 的交互式 shell 时,如果存在和文件,bash 将从
/etc/bash.bashrc和中读取并执行命令~/.bashrc。可以使用--norc选项来抑制此行为。file选项将强制 bash 从文件而不是和 中
--rcfile读取并执行命令。/etc/bash.bashrc`~/.bashrc`

因此,请查看/etc/profile/etc/bash.bashrc,这些文件是全局设置的正确位置。在其中输入类似以下内容来设置环境变量:

export MY_VAR=xxx

解决方案 6:

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

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

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

Unix 的设计目的是在一定限制内服从用户。

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

解决方案 7:

使用 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
相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1325  
  IPD(Integrated Product Development)流程作为一种先进的产品开发管理模式,在众多企业中得到了广泛应用。它涵盖了从产品概念产生到产品退市的整个生命周期,通过整合跨部门团队、优化流程等方式,显著提升产品开发的效率和质量,进而为项目的成功奠定坚实基础。深入探究IPD流程的五个阶段与项目成功之间...
IPD流程分为几个阶段   4  
  华为作为全球知名的科技企业,其成功背后的管理体系备受关注。IPD(集成产品开发)流程作为华为核心的产品开发管理模式,其中的创新管理与实践更是蕴含着丰富的经验和深刻的智慧,对众多企业具有重要的借鉴意义。IPD流程的核心架构IPD流程旨在打破部门墙,实现跨部门的高效协作,将产品开发视为一个整体的流程。它涵盖了从市场需求分析...
华为IPD是什么   3  
  IPD(Integrated Product Development)研发管理体系作为一种先进的产品开发模式,在众多企业的发展历程中发挥了至关重要的作用。它不仅仅是一套流程,更是一种理念,一种能够全方位提升企业竞争力,推动企业持续发展的有效工具。深入探究IPD研发管理体系如何助力企业持续发展,对于众多渴望在市场中立足并...
IPD管理流程   3  
  IPD(Integrated Product Development)流程管理旨在通过整合产品开发流程、团队和资源,实现产品的快速、高质量交付。在这一过程中,有效降低成本是企业提升竞争力的关键。通过优化IPD流程管理中的各个环节,可以在不牺牲产品质量和性能的前提下,实现成本的显著降低,为企业创造更大的价值。优化产品规划...
IPD流程分为几个阶段   4  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用