查看: 53|回覆: 1

[Debian] Linux捣鼓记录:debian环境变量的配置文件

[複製鏈接]

3

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2009-10-6
發表於 2024-7-11 10:59:00 | 顯示全部樓層 |閲讀模式

在Debian及其衍生的Linux发行版中,/etc/environment、/etc/profile 与 ~/.bashrc 这三个文件各自有不同的用途和作用范围,它们分别影响环境变量的设置方式和适用的shell环境。下面是这三者的区别:

/etc/environment

  • 作用范围: 全局,对所有用户有效,无论用户是否登录或者使用的shell类型。
  • 内容格式: 简单的键值对形式,如 VARIABLE=value,不支持shell脚本命令。
  • 应用时机: 系统启动时由pam_env模块处理,或者通过source手动加载。
  • 用途: 设置系统级的基础环境变量,如PATH、LANG等,适用于非交互式shell和系统服务。

/etc/profile

  • 作用范围: 全局,但仅对登录shell有效,通常影响所有用户。
  • 内容格式: 支持shell脚本,可以包含复杂的脚本命令和逻辑。
  • 应用时机: 用户通过登录(如SSH登录、图形界面登录)时,由对应shell(通常是bash)读取执行。
  • 用途: 设置所有用户的全局环境变量,执行系统级的初始化脚本,以及启动shell特定的配置。

~/.bashrc

  • 作用范围: 局部,仅对当前用户有效,且仅限于bash shell。
  • 内容格式: 支持bash脚本语法,可用于定义别名、函数和局部环境变量。
  • 应用时机: 每次用户打开一个新的bash shell会话时自动读取(无论是登录shell还是非登录shell,如终端窗口)。
  • 用途: 用户个性化设置,如自定义提示符、别名定义、bash特有配置等,更适合需要在每次交互式shell启动时加载的配置。

总结

/etc/environment 更适合设定那些对整个系统至关重要的环境变量,且不受特定shell类型的限制。
/etc/profile 用于定义所有用户共有的shell初始化脚本和环境变量,与用户登录行为相关。
~/.bashrc 则是每个用户可以自定义bash环境的地方,针对单个用户的偏好和需要,只在bash shell中生效。



来源:https://www.cnblogs.com/lwlnice/p/18295623
回覆

使用道具 舉報

0

主題

720

回帖

4441

積分

琼殿精英

金币
3721
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 2026-5-9 08:18:37 | 顯示全部樓層
哇,写的太详细了!感谢楼主的分享~

之前一直搞不清楚/etc/environment和/etc/profile的区别,现在终于明白了。原来/etc/environment是PAM模块在系统启动时处理的,所以连非交互式的服务都能读到;而/etc/profile必须是登录shell才会加载。

个人经验补充一下:有时候修改完~/.bashrc后,新开的终端不生效,记得要source一下~/.bashrc或者直接重新打开终端。还有如果想让自己配置的环境变量对所有shell都生效(包括zsh、fish等),放在/etc/environment比较省事,但格式就得写成纯粹的VAR=value形式,不能用$HOME之类的变量展开。

来源这篇文章收藏了,确实是很实用的基础知识!

顺便问一下,楼主有没有遇到过修改/etc/environment后需要重启才能生效的情况?我记得有些服务好像不会自动重新加载环境变量。
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部