ubuntu下的~/.bashrc、/etc/environment 和 /etc/profile有什么区别
~/.bashrc
、/etc/environment
和 /etc/profile
的作用类似,但它们的使用场景和加载方式有区别。以下是它们的主要差异:
1. ~/.bashrc
-
作用范围:
仅适用于当前用户的交互式 非登录(non-login)shell,即打开一个终端窗口时会加载。 -
适用场景:
- 当前用户的个性化环境变量配置。
- 为用户自定义 PATH、别名(alias)等内容。
-
加载方式:
- 每次打开一个新的终端窗口时会被自动加载。
- 通常不会在登录时加载(如通过 SSH 登录)。
-
文件位置:
位于用户的主目录,例如/home/username/.bashrc
。 -
使用示例:
在~/.bashrc
中添加:export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
然后运行:
source ~/.bashrc
2. /etc/environment
-
作用范围:
对 所有用户 生效,并且不依赖 shell 的类型或是否交互式登录。 -
适用场景:
- 设置全局环境变量,比如 PATH、LD_LIBRARY_PATH 等。
- 用于所有用户共享的简单全局变量配置。
-
加载方式:
- 在系统启动时加载。
- 适用于所有 shell 和非 shell 程序,例如图形界面程序。
- 变量格式比较简单,不支持复杂的 Bash 语法(例如
export
或命令替换)。
-
文件位置:
位于/etc/environment
。 -
使用示例:
编辑/etc/environment
,添加:PATH="/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" LD_LIBRARY_PATH="/usr/local/cuda/lib64"
保存后重启系统或使用以下命令刷新:
source /etc/environment
3. /etc/profile
-
作用范围:
对 所有用户 生效,但仅适用于 登录(login)shell。 -
适用场景:
- 配置全局变量,适用于所有用户的交互式和登录 shell。
- 可以用来为所有用户定义 PATH、UMASK 或运行全局初始化脚本。
-
加载方式:
- 在用户登录时加载(如通过终端或 SSH 登录)。
- 通常会加载一次,而不会在每个新终端中重复加载。
-
文件位置:
位于/etc/profile
。 -
使用示例:
编辑/etc/profile
,添加:export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
保存后使更改生效:
source /etc/profile
区别总结
文件 | 作用范围 | 加载条件 | 适用场景 |
---|---|---|---|
~/.bashrc | 当前用户 | 打开新终端窗口(非登录 shell) | 用户定制交互式终端的行为和环境变量 |
/etc/environment | 所有用户 | 系统启动(适用于所有程序,包括图形界面程序) | 简单的全局变量设置,不支持复杂语法 |
/etc/profile | 所有用户 | 用户登录(适用于登录 shell) | 定义全局登录 shell 的初始化环境变量 |
如何选择?
- 仅需对当前用户生效:
使用~/.bashrc
。 - 需全局生效,对所有用户有效:
- 简单变量配置:使用
/etc/environment
。 - 更复杂的配置(需要
export
或脚本逻辑):使用/etc/profile
。
- 简单变量配置:使用
- 需要在非 shell 程序中使用(例如 GUI 应用程序):
修改/etc/environment
。
选择取决于变量的适用范围和所需的加载条件!
原文地址:https://blog.csdn.net/libertea/article/details/144272149
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!