首页 > 系统相关 >深入理解Linux环境配置文件:.bashrc、.bash_profile和.profile

深入理解Linux环境配置文件:.bashrc、.bash_profile和.profile

时间:2025-01-12 20:12:05浏览次数:1  
标签:profile shell 配置文件 用户 bashrc bash

转自:https://blog.csdn.net/weixin_39973810/article/details/137281970

在Linux世界中,理解各种shell配置文件如.bashrc、.bash_profile和.profile的作用和区别对于有效地管理和定制你的命令行环境至关重要。许多用户经常对这些文件的功能和使用场景感到困惑。本文旨在详细解释这些配置文件的差异、作用以及它们的正确使用方法。

1、.bashrc:交互式非登录Shell的配置文件

1.1、什么是.bashrc?

bashrc 文件用于配置函数或别名。bashrc 文件有两种级别:

  • 系统级:位于/etc/bashrc,对所有用户生效。
  • 用户级:位于~/.bashrc,仅对当前用户生效

bashrc 文件只会对指定的 shell 类型起作用,bashrc 只会被 bash shell 调用,用于交互式非登录shell会话。这意味着每次你打开一个新的终端窗口或标签页时,.bashrc中的配置就会被加载。

1.2、使用场景

.bashrc适用于那些需要频繁执行的配置,如:

  • 设置shell别名和函数
  • 定义环境变量,这些变量仅在当前用户的shell会话中有效
  • 修改命令提示符
  • 设置shell的查找路径($PATH)

示例:
在.bashrc文件中,你可能会有这样的内容:

alias ll='ls -la'
export PATH="$HOME/bin:$PATH"

这段代码为ls -la命令创建了一个别名ll,并将$HOME/bin目录添加到搜索路径中。

2、.bash_profile和.profile:登录Shell的配置文件

2.1、什么是.bash_profile和.profile?

profile,路径:/etc/profile,用于设置系统级的环境变量和启动程序,在这个文件下配置会对所有用户生效。

当用户登录(login)时,文件会被执行,并从/etc/profile.d目录的配置文件中查找shell设置。

一般不建议/etc/profile文件中添加环境变量,因为在这个文件中添加的设置会对所有用户起作用。

 

.bash_profile只对单一用户有效,文件存储位于~/.bash_profile,该文件是一个用户级的设置,可以理解为某一个用户的 profile 目录下。

这个文件同样也可以用于配置环境变量和启动程序,但只针对单个用户有效。

和 profile 文件类似,bash_profile 也会在用户登录(login)时生效,也可以用于设置环境变理。

但与 profile 不同,bash_profile 只会对当前用户生效。

.bash_profile(对于Bash shell)和.profile(对于其他sh兼容shell)是在登录shell会话开始时加载的配置文件。当你通过图形界面登录、通过SSH远程连接到系统或通过终端登录时,这些文件中的设置就会生效。

2.2、使用场景

这些文件通常包含:

  • 环境变量的设置,这些变量在整个登录会话中都有效
  • 启动必要的应用程序
  • 读取其他配置文件,如.bashrc

示例:

在.bash_profile或.profile文件中,你可以添加代码来加载.bashrc:

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

这确保了即使在登录shell中,.bashrc的配置也能被应用。

3、区别和选择

这三种文件类型的差异用一句话表述就是:

/etc/profile/etc/bashrc 是系统全局环境变量设定;

~/.profile~/.bashrc用户家目录下的私有环境变量设定。

当登入系统时候获得一个 shell 进程时,其读取环境设定档如下:

  • 首先读入全局环境变量设定档/etc/profile,然后根据其内容读取额外的设定的文档,如/etc/profile.d/etc/inputrc
  • 根据不同使用者帐号,于其家目录内读取~/.bash_profile
  • 读取失败则会读取~/.bash_login
  • 再次失败则读取~/.profile(这三个文档设定基本上无差别,仅读取上有优先关系);
  • 最后,根据用户帐号读取~/.bashrc

至于~/.profile~/.bashrc都具有个性化定制功能,但~/.profile可以设定本用户专有的路径、环境变量等,它只能登入的时候执行一次。

~/.bashrc也是某用户专有设定文档,可以设定路径、命令别名,每次 shell script 的执行都会使用它一次。

3.1、交互式非登录vs登录Shell

.bashrc适用于每次打开新终端时的交互式非登录shell。
.bash_profile和.profile适用于开始一个新的登录shell会话。

3.2、加载频率

  • .bashrc在每次打开新的终端窗口或标签时加载。
  • .bash_profile和.profile仅在登录时加载。

3.3、通用性

  • .profile可以被多种兼容sh的shell读取,而.bash_profile特定于Bash。

3.4、选择使用哪个文件?

  1. 对于Bash用户:在.bash_profile中设置环境变量,并确保它加载.bashrc。
  2. 对于非Bash sh兼容shell用户:使用.profile来设置环境变量。
  3. 通用配置:可以将通用配置放在.profile中,特定于Bash的配置放在.bashrc中。

4、结论

正确理解和使用这些配置文件可以帮助你更有效地管理你的Linux环境。通过合理配置.bashrc、.bash_profile和.profile,你可以确保无论是在交互式会话还是登录会话中,环境都被适当地设置和管理。希望本文能帮助你清晰地理解这些配置文件的作用和使用场景,从而更好地掌握Linux系统的使用。

标签:profile,shell,配置文件,用户,bashrc,bash
From: https://www.cnblogs.com/dclogs/p/18667213

相关文章

  • SQL Server性能优化(3)使用SQL Server Profiler查询性能瓶颈
    关于SQLServerProfiler的使用,网上已经有很多教程,比如这一篇文章:SQLServerProfiler:使用方法和指标说明。微软官方文档:https://msdn.microsoft.com/zh-cn/library/ms179428(v=sql.105).aspx有更详细的介绍。经过使用Profiler进行监视,得到监视结果。=========================......
  • 如何修改docker的配置文件
    Docker的主要配置文件通常位于Linux系统的 /etc/docker/ 目录下,关键的配置文件是 daemon.json。这个文件用于配置Docker守护进程(DockerDaemon)的各项参数,包括但不限于数据存储位置、网络设置、日志配置、信任代理等。查找和修改Docker配置文件的步骤如下:定位配置文件:Docker......
  • 封装访问配置文件类
    需要用到的包:Microsoft.Extensions.Configuration.Json:负责加载JSON配置文件,解析其中的内容。Microsoft.Extensions.Configuration.Binder:负责将解析的配置数据绑定到实体publicclassAppSettings{publicstaticIConfigurationConfiguration{get;set;}......
  • Spring配置文件中:密码明文改为密文处理方式(通用方法)
    目录一、背景   二、思路A)普通方式B) 适合bootstrap.properties方式三、示例A)普通方式(连接Redis集群)A)普通方式(连接RocketMQ)B)适合bootstrap.properties方式四、总结一、背景    SpringBoot和SpringCloud中涉及多个配置文件,配置文件中对于密码......
  • ptp4l协议_配置文件
     ptp4l-iens33-f/etc/ptp4l.conf-m-S-2#服务端ptp4l-iens33-f/etc/ptp4l.conf-m-S-s-2 --step_threshold0.00002#客户端phc2sys-sCLOCK_REALTIME-w-m#设置时间摘自:https://blog.csdn.net/weixin_49041703/article/details/14......
  • wx.openChannelsUserProfile
    wx.openChannelsUserProfile(Objectobject)基础库2.21.2开始支持,低版本需做兼容处理。以Promise风格调用:不支持需要页面权限:当前是插件页面时,宿主小程序不能调用该接口,反之亦然小程序插件:支持相关文档:视频号主页功能描述打开视频号主页。若为插件环境,只允许......
  • cuda profiler
    cudaapi的采样主要cudart提供了profiler的接口,定义在cuda_profiler_api.h文件中,下面的代码是一个例子。参考https://blog.csdn.net/weixin_43603658/article/details/130441136,可以看到使用cudaProfilerStart和cudaProfilerEnd可以查看程序中指定段的性能数据。nsys在这个基础......
  • tuack 配置文件转 uoj 配置文件
    #!/bin/envpython3fromtuackimportbasefromosimportsystembase.init()name="printer"deflndata(src,dst):system(f"ln-snf{src}.in{dst}.in")system(f"ln-snf{src}.ans{dst}.out")system(f"cpstatement......
  • YOLO-v3如何从配置文件中构建网络骨架
    从配置文件路径读取模型配置参数config文件形式从路径中读取返回一个列表,列表中每个网络层以字典的形式存储参数defparse_model_config(path):"""Parsestheyolo-v3layerconfigurationfileandreturnsmoduledefinitions"""file=open(path,'r')#......
  • C# 读写配置文件
    1.在你的工程中,添加app.config文件。文件的内容默认为:<?xmlversion="1.0"encoding="utf-8"?><configuration></configuration>2.如果你想给程序配置一些参数,就在标签中添加.例如:<?xmlversion="1.0"encoding="utf-8"?><con......