Linux中,~/.bashrc和/etc/profile的区别,以及全局变量的配置

~/.bashrc/etc/profile 都是用于配置用户环境的文件,但它们在用途、执行时机和适用范围上有所不同。以下是详细的区别:

~/.bashrc

  • 作用 : ~/.bashrc 是一个用户级别的配置文件,用于设置用户的 shell 环境。它通常用于配置用户的个性化环境,如别名、函数和环境变量等。

  • 执行时机 : ~/.bashrc 在每次启动一个新的交互式非登录 Bash shell 时被执行。也就是说,每次你打开一个新的终端窗口或启动一个新的终端会话时,~/.bashrc 会被读取和执行。

  • 适用范围 : 只对当前用户有效。每个用户都有自己的 ~/.bashrc 文件,这些文件是独立的。

  • 配置示例:

    bash 复制代码
    # ~/.bashrc
    alias ll='ls -la'
    export PATH=$PATH:$HOME/bin

/etc/profile

  • 作用 : /etc/profile 是一个系统范围的配置文件,用于设置系统级别的环境变量和启动脚本。它适用于所有用户,并用于设置系统范围的环境。

  • 执行时机 : /etc/profile 在用户登录到系统时(通过控制台、SSH、或其他登录方式)被执行。这包括登录 shell 会话。

  • 适用范围 : 对所有用户有效。无论是哪个用户登录系统,/etc/profile 都会被读取和执行。

  • 配置示例:

    bash 复制代码
    # /etc/profile
    export PATH=$PATH:/usr/local/bin
    export EDITOR=vim

总结

  • ~/.bashrc:

    • 用途: 用户级别的个性化配置
    • 执行时机: 每次启动新的交互式非登录 shell
    • 适用范围: 当前用户
  • /etc/profile:

    • 用途: 系统级别的全局配置
    • 执行时机: 用户登录时
    • 适用范围: 所有用户

补充信息

登录 Shell 和非登录 Shell 的关系

非登录 Shell 是在已经登录的 Shell 会话中启动的,通常不需要重新验证身份。它是在一个已经认证的环境下进行的操作。例如,当你在登录到系统后打开一个新的终端窗口或标签页时,你启动的是一个非登录 Shell。

  • 登录 Shell:

    • 需要进行身份验证。
    • 是用户首次登录时启动的 Shell。
    • 读取 /etc/profile~/.bash_profile~/.bash_login~/.profile 等文件。
  • 非登录 Shell:

    • 不需要重新身份验证。
    • 在已登录的 Shell 会话中启动,通常由用户打开一个新的终端窗口或标签页,或者从现有的终端中启动新的 Shell。
    • 读取 ~/.bashrc 文件。

在这种设置下,登录 Shell 环境被创建并认证后,你可以在该环境下启动多个非登录 Shell,而不需要再次进行身份验证。

Linux中全局变量配置,/etc/profile.d还是/etc/profile
  • 典型配置 :
    • /etc/profile: 用于设置所有用户的全局环境变量和系统级别的配置。
    • ~/.bashrc: 用于设置用户个人的环境变量、别名、函数等。
相关推荐
人工智能训练2 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
微露清风3 小时前
系统性学习Linux-第二讲-基础开发工具
linux·运维·学习
不会代码的小猴4 小时前
Linux环境编程第六天笔记--system-V IPC
linux·笔记
阳光九叶草LXGZXJ4 小时前
达梦数据库-学习-48-DmDrs控制台命令(同步之Manager、CPT模块)
linux·运维·数据库·sql·学习
诸神缄默不语4 小时前
Linux命令行教程
linux
小二李5 小时前
第11章 nestjs服务端开发:登录鉴权
运维·服务器
i建模6 小时前
如何在Arch Linux中重设忘记的root密码
linux·运维·服务器
chatexcel7 小时前
元空AI+Clawdbot:7×24 AI办公智能体新形态详解(长期上下文/自动化任务/工具粘合)
运维·人工智能·自动化
kida_yuan7 小时前
【Linux】运维实战笔记 — 我常用的方法与命令
linux·运维·笔记
@syh.7 小时前
【linux】进程控制
linux