news 2026/5/16 2:31:27

linux用户配置.profile 和 .bashrc 的区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
linux用户配置.profile 和 .bashrc 的区别

好的,这是一个非常经典的 Linux 问题。profilebashrc文件的区别核心在于Shell 的启动模式

简单来说:

  • profile系列文件登录 (Login)时加载,用于设置环境变量运行一次的命令。
  • bashrc文件交互式 (Interactive)和非登录 Shell 启动时加载,用于设置别名 (alias)函数与外观相关的设置

为了让这个概念更清晰,我们来看一个决策流程图,它展示了 Bash 在启动时会读取哪些文件:

下面我们详细解释图表中涉及的文件和概念。


核心概念:Shell 的启动模式

要理解它们的区别,首先必须明白 Bash Shell 有两种主要的启动模式:

  1. 登录 Shell (Login Shell)

    • 含义:需要你进行身份验证(输入用户名和密码)的 Shell。
    • 例子
      • 通过tty1-tty6文本控制台登录。
      • 通过ssh远程登录。
      • 使用su -su -l(带横杠)切换用户。
    • 特点:它代表一次完整的登录会话。
  2. 交互式非登录 Shell (Interactive Non-Login Shell)

    • 含义:不需要重新登录,在已有会话中启动的 Shell。
    • 例子
      • 在桌面环境中打开终端(如 GNOME Terminal)。
      • 使用su(不带横杠)切换用户。
      • 在已登录的 Shell 中直接输入bash
    • 特点:它继承自父 Shell(登录 Shell),因此环境变量已经存在。
  3. 非交互式 Shell (Non-Interactive Shell)

    • 含义:执行脚本的 Shell。
    • 例子:运行 Shell 脚本(./script.sh)。
    • 特点:不提供标准的输入提示符,仅为了执行命令。

各文件的作用

根据上面的流程图,我们来看看这些文件的具体职责。

profile系列文件(用于登录 Shell)
  • /etc/profile系统全局配置。所有用户登录时都会执行此文件。通常用于设置全局的环境变量(如PATH,USER,MAIL,HOSTNAME)和启动一些系统级别的脚本(如/etc/profile.d/*.sh)。
  • ~/.bash_profile用户个人配置(优先级最高)。如果存在,则登录 Shell 会执行它,而不会执行~/.bash_login~/.profile。通常在这里设置用户个人的环境变量和执行一次性命令。
  • ~/.profile用户个人配置(退路)。如果~/.bash_profile不存在,则登录 Shell 会尝试执行此文件。这是一个更通用的文件,也被其他 Shell(如dash)使用。

总结profile文件只会在登录时执行一次,主要用来定义环境变量(使用export)和运行那些只需要在会话开始时运行一次的程序。

bashrc系列文件(用于交互式非登录 Shell)
  • /etc/bash.bashrc系统全局配置。所有用户的交互式非登录 Shell 都会执行此文件(并非所有 Linux 发行版都有此文件)。
  • ~/.bashrc用户个人配置。每次启动交互式非登录 Shell 时都会执行。这是你最常修改的文件,用于定义:
    • 别名 (Alias)alias ll='ls -alF'
    • Shell 函数
    • 提示符 (PS1) 定制
    • 其他交互式相关的设置(如补全功能)

总结bashrc文件每次打开新的终端标签/窗口时都会执行,主要用来定义别名、函数和 Shell 选项,这些东西不需要被“导出”给子进程。


常见场景示例

你的操作Shell 类型会读取的文件
SSH 远程登录登录 Shell/etc/profile~/.bash_profile(或~/.profile)
在图形界面打开终端交互式非登录 Shell~/.bashrc(可能还有/etc/bash.bashrc)
执行脚本./test.sh非交互式 Shell都不读(除非脚本里用source命令显式加载)
在终端中输入bash交互式非登录 Shell~/.bashrc

最佳实践

  • 环境变量(如JAVA_HOME,PATH追加)放在~/.bash_profile~/.profile中。

  • 别名、函数和 Shell 选项放在~/.bashrc中。

  • 为了让登录 Shell 也能享受到~/.bashrc里的别名设置,通常会在~/.bash_profile里写上一行代码去主动加载~/.bashrc

    在 ~/.bash_profile 中加入以下内容

    if [ -f ~/.bashrc ]; then
    . ~/.bashrc
    fi

    这样无论是登录还是非登录 Shell,你的所有个性化设置都能生效。这也是许多现代 Linux 发行版的默认配置。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/13 5:47:44

DTIIA 4.6、托辊

1、辊径选择 【原则】托辊辊子的直径 根据 限制带速 和 承载能力 进行选择。 1.1、辊子的限制带速 【衡量标准】确保辊子转速不超过 600r/min 时的限制带速列于表4-12。 表4-12 辊子的限制带速 (白话:即辊径选择需要在表格中的限制带速内) …

作者头像 李华
网站建设 2026/4/25 17:47:03

5分钟搭建AI新闻收集系统:开源工具的实战指南

5分钟搭建AI新闻收集系统:开源工具的实战指南 【免费下载链接】Agently-Daily-News-Collector An open-source LLM based automatically daily news collecting workflow showcase powered by Agently AI application development framework. 项目地址: https://g…

作者头像 李华
网站建设 2026/5/8 21:16:35

Livox-SDK2激光雷达开发终极指南:从零开始的完整安装教程

Livox-SDK2激光雷达开发终极指南:从零开始的完整安装教程 【免费下载链接】Livox-SDK2 Drivers for receiving LiDAR data and controlling lidar, support Lidar HAP and Mid-360. 项目地址: https://gitcode.com/gh_mirrors/li/Livox-SDK2 想要快速上手Liv…

作者头像 李华
网站建设 2026/5/3 11:21:40

HarmonyOS配置文件终极指南:从入门到精通的完整教程

HarmonyOS配置文件终极指南:从入门到精通的完整教程 【免费下载链接】harmony-utils harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力开发者迅速构建鸿蒙应用。其封装的工具涵盖了APP、设备、屏幕、授…

作者头像 李华
网站建设 2026/5/11 23:10:47

通天之分组背包(洛谷P1757 )

题目背景直达通天路小 A 历险记第二篇题目描述自 01 背包问世之后,小 A 对此深感兴趣。一天,小 A 去远游,却发现他的背包不同于 01 背包,他的物品大致可分为 k 组,每组中的物品相互冲突,现在,他…

作者头像 李华
网站建设 2026/5/9 11:01:13

Ruby爬虫框架Wombat:用优雅DSL轻松提取结构化数据

Ruby爬虫框架Wombat:用优雅DSL轻松提取结构化数据 【免费下载链接】awesome-crawler A collection of awesome web crawler,spider in different languages 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-crawler 还在为网页数据提取而烦恼吗&#x…

作者头像 李华