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 小时前
Linux程序接收到sigpipe信号崩溃处理
linux
geshifei2 小时前
Sched ext回调3——select_cpu(linux 6.15.7)
linux·ebpf
yunfuuwqi2 小时前
OpenClaw✅真·喂饭级教程:2026年OpenClaw(原Moltbot)一键部署+接入飞书最佳实践
运维·服务器·网络·人工智能·飞书·京东云
迎仔2 小时前
C-算力中心网络隔离实施方法:怎么搞?
运维·网络
代码游侠2 小时前
C语言核心概念复习——网络协议与TCP/IP
linux·运维·服务器·网络·算法
你真是饿了3 小时前
6.库制作与原理
linux·服务器
Zach_yuan4 小时前
深入浅出 JSONCpp
linux·服务器·网络·c++
AtoposのCX3304 小时前
Docker运行hello-world镜像失败或超时
运维·docker
马猴烧酒.4 小时前
【面试八股|JAVA多线程】JAVA多线程常考面试题详解
java·服务器·数据库
北京迅为5 小时前
《【北京迅为】itop-3568开发板NPU使用手册》- 第 7章 使用RKNN-Toolkit-lite2
linux·人工智能·嵌入式·npu