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

2024-10-12 10:28:00
admin
原创
87
摘要:问题描述:我可以设置适用于所有用户的通用设置吗?解决方案 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
相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用