自学内容网 自学内容网

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 的初始化环境变量

如何选择?

  1. 仅需对当前用户生效:
    使用 ~/.bashrc
  2. 需全局生效,对所有用户有效:
    • 简单变量配置:使用 /etc/environment
    • 更复杂的配置(需要 export 或脚本逻辑):使用 /etc/profile
  3. 需要在非 shell 程序中使用(例如 GUI 应用程序):
    修改 /etc/environment

选择取决于变量的适用范围和所需的加载条件!


原文地址:https://blog.csdn.net/libertea/article/details/144272149

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!