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: 用于设置用户个人的环境变量、别名、函数等。
相关推荐
€☞扫地僧☜€1 小时前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器
hjjdebug1 小时前
linux 下 signal() 函数的用法,信号类型在哪里定义的?
linux·signal
其乐无涯1 小时前
服务器技术(一)--Linux基础入门
linux·运维·服务器
Diamond技术流1 小时前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
写bug的小屁孩1 小时前
前后端交互接口(三)
运维·服务器·数据库·windows·用户界面·qt6.3
斑布斑布1 小时前
【linux学习2】linux基本命令行操作总结
linux·运维·服务器·学习
紅色彼岸花1 小时前
第六章:DNS域名解析服务器
运维·服务器
Spring_java_gg1 小时前
如何抵御 Linux 服务器黑客威胁和攻击
linux·服务器·网络·安全·web安全
✿ ༺ ོIT技术༻1 小时前
Linux:认识文件系统
linux·运维·服务器
恒辉信达1 小时前
hhdb数据库介绍(8-4)
服务器·数据库·mysql