.bashrc 与 .bash_profile

2023-10-22

如果您在命令行上花费大量时间,您很可能想要自定义您的 shell 环境。这可能意味着创建别名,将新目录添加到 $PATH,或更改 shell 提示符的外观。

您可能遇到过一些教程,其中他们说将您的配置放在.bashrc, .bash_profile或由 bash shell 读取并执行的另一个配置文件。

在这篇文章中,我们将讨论 Bash 启动文件以及它们之间的区别.bashrc and .bash_profile files.

交互式登录和非登录 Shell#

当被调用时,Bash 从一组启动文件中读取并执行命令。读取哪些文件取决于 shell 是作为交互式登录 shell 还是非登录 shell 调用。

shell 可以是交互式的,也可以是非交互式的。

简单来说,交互式 shell 是读取和写入用户终端的 shell,而非交互式 shell 是不与终端关联的 shell,例如执行脚本时的 shell。

交互式 shell 可以是登录 shell,也可以是非登录 shell。

当用户通过 ssh 或本地远程登录到终端时,或者使用以下命令启动 Bash 时,将调用登录 shell--login选项。从登录 shell 调用交互式非登录 shell,例如在键入时bash在 shell 提示符下或打开新的 Gnome 终端选项卡时。

Bash 启动文件#

当作为交互式登录 shell 调用时,Bash 会查找/etc/profile文件,并且如果文件已存在,它运行文件中列出的命令。然后 Bash 搜索~/.bash_profile, ~/.bash_login, and ~/.profile按列出的顺序查找文件,并从找到的第一个可读文件中执行命令。

当 Bash 作为交互式非登录 shell 被调用时,它从以下位置读取并执行命令~/.bashrc,如果该文件存在并且可读。

.bashrc 和 .bash_profile 之间的区别#

.bash_profile当 Bash 作为交互式登录 shell 被调用时被读取并执行,而.bashrc针对交互式非登录 shell 执行。

Use .bash_profile运行只应运行一次的命令,例如自定义$PATH 环境变量 .

将每次启动新 shell 时运行的命令放入.bashrc文件。这包括您的别名和函数, 自定义提示,历史定制, 等等。

通常,~/.bash_profile包含如下所示的行.bashrc文件。这意味着每次登录终端时,都会读取并执行这两个文件。

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

大多数 Linux 发行版都使用~/.profile代替~/.bash_profile. The ~/.profile文件被所有 shell 读取,同时~/.bash_profile仅由 Bash 提供。

如果您的系统上不存在任何启动文件,您可以create it.

结论#

.bash_profile and .bashrc是包含调用 Bash 时运行的 shell 命令的文件。.bash_profile在交互式登录 shell 上读取并执行,而.bashrc在非登录 shell 上。

查看 Bash 手册以获取更多信息Bash 启动文件 .

如果您有任何问题或反馈,请随时发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.bashrc 与 .bash_profile 的相关文章

  • 如何在 w3m 终端中使用 Javascript?

    我发现文本浏览器 w3m 在我看来是迄今为止最好的 然而 主要问题是Javascript 当我使用 Stackoverflow 时 我根本看不到评论 我不确定让 Javascript 在终端中存在什么限制 如何为终端启用至少部分 JavaS
  • 使用 c 访问 /Private/etc

    这可能是一个简单的问题 但如何在 c 控制台应用程序中向用户 请求 系统 根权限 我需要写信给 Private etc 但我不能 这是针对 mac unix 的 我已经看到它被用在其他控制台命令中 例如当您运行以下命令 sudo Syste
  • 那么如何通过终端打开Android SDK Manager呢? [复制]

    这个问题在这里已经有答案了 我已经将 CD 放入终端中的 android 工具目录中 我尝试输入 android 并按回车键 我也尝试输入 android sdk 并按回车键 但 sdk 管理器不会出现 有什么解决方案或建议可以帮助我了解我
  • 在Python中的远程机器上执行命令

    我正在 Ubuntu 上用 python 编写一个程序来执行命令ls l在 RaspberryPi 上 连接网络 有人可以指导我该怎么做吗 当然 有多种方法可以做到 假设您有一个 Raspberry Piraspberry lan主机和您的
  • 获取终端中可用线路的数量

    如何找到终端中的可用线路数量 最好以跨平台的方式 但欢迎任何建议 甚至特定于操作系统 终端的高度和长度可以使用以下公式找到os https docs python org 3 library os html querying the siz
  • Mongod 错误:98 无法锁定文件:/data/db/mongod.lock 资源暂时不可用。 mongod 实例是否已在运行?

    2017 06 12T13 06 18 407 0300 I 存储 initandlisten initAndListen 中出现异常 98 无法锁定文件 data db mongod lock 资源暂时不可用 mongod 实例是否已在运
  • SSH 每次都会询问密码

    我的私钥有一个恼人的问题 每次我想要clone or push通过终端或 Tower 应用程序中的 ssh 我必须输入我的密码 我什至删除并重新创建了 ssh 密钥 并在 Github 上设置了几次密钥 但看起来它的生命周期很短 几分钟后就
  • 尽管安装了 Spyder-Terminal,Spyder 5 中仍然没有终端

    我在 Mac OS Big Sur 上安装了 Spyder 5 我从终端运行此命令 conda install spider terminal c spider ide 该命令运行没有错误 仍然没有终端 我一定做错了什么 因为终端没有显示在
  • SQLPlus varchar2 输出空格

    当我像下面这样查询表时 NAME 列的输出太长 我最近将数据类型更改为 VARCHAR2 150 而不是 VARCHAR 150 以不保存空格 然而 输出似乎无论如何都包含 一些 空格 谁能澄清这里发生了什么事吗 我是否在这里查看空格 或者
  • C: main 未找到,但它在那里 |编译错误

    当我编译两个 c 文件 如下所示 时 我收到一个非常奇怪的错误 终端编译代码 gcc I o main c matrix c lblas lgfortran Error usr bin ld usr lib debug usr lib i3
  • psql 显示 ansi 彩色文本

    My psqlrc有以下选项 setenv LESS iMSx4 FXR setenv PAGER less pset pager always 我想要着色的 psql 输出是 x1B 35m x1B 0m x1B 35mr x1B 0m
  • OSX - 始终隐藏某些文件

    我知道如何在终端中显示和隐藏隐藏文件 但是有没有办法在显示隐藏文件时隐藏某些文件 例如 DS STORE 可以这么说 使某些文件超级隐藏吗 Use chflags与隐藏选项 ie chflags hidden fileToHide从 Fin
  • macOS 上的 Bash - 获取给定年份每个星期六的日期列表

    In bash on macOS 我想写一个小脚本dates 或任何其他可以做的程序 它给我一个格式的日期列表yyyymmdd给定年份的每个星期六并将其保存到变量中 例如 如果我想要 1850 年所有星期六的日期列表 它应该看起来像这样 v
  • stripe 登录 zsh:未找到命令:stripe

    我正在跟进条纹文档 https stripe com docs stripe cli install当我去stripe login在步骤 2 中 我收到以下错误 zsh 找不到命令 条带 我已经执行了步骤 1 安装 stripe CLI 为
  • Visual Studio Code 中的集成终端是从外部打开的,而不是在内部打开的

    I have reinstalled Visual Studio Code and for some reason when I do the Ctrl Shift shortcut instead of opening a termina
  • 在终端中访问文件“添加日期”

    在我的 Mac 上的下载文件夹中 文件有一个 添加日期 列 我正在尝试创建一个脚本来将超过 x 天的文件移至我的垃圾文件夹 以下方法有效 但它是根据创建 修改日期提取文件 而不是我从 Finder 中看到的 添加日期 有没有办法显示 使用这
  • 如何更改 VS Code 中的当前工作目录?

    如何更改 VS Code 中的当前工作目录 比方说 我有一个名为 apps 的父文件夹 其中有一个名为 MyBeautifulApp 的子文件夹 我使用 vscode 打开了 apps 文件夹 我应该在命令行上运行什么命令不仅cd进入 My
  • Emacs 退出终端

    在 Emacs 中运行终端模式时使用M x term using C x C o我无法切换到另一个缓冲区来继续处理事情 我知道这是可能的M x shell但使用此命令时 shell 的某些方面不起作用 less more 手册页等 我想知道
  • 使用通配符在 .zshrc 中获取多个文件

    我通过 oh my zsh 使用 z shell 我想从 zshrc 文件中获取多个别名文件 这样我就可以让事情井井有条 我已经为别名文件添加了前缀 alias 这样我就可以通配符加载它们 但是 打电话给source alias 只加载第一
  • 编写代码以:启动 R 会话、运行 R 脚本、终止会话、重复

    我正在寻找一种简单的 设置后就忘记它 的方式 无论是作为终端中的单个参数字符串还是简单的 Java 程序 来自动执行以下操作 1 启动R会话 2 告诉 R 源 R 文件包含冗长的并行模拟代码 3 完成后终止R会话 4 开始一个新的R会话 5

随机推荐

  • 安装、配置和使用 Linux NIS 服务器

    我们使用 Linux NIS 服务器 网络信息服务 用于在网络上的系统之间共享存储在平面文件中的关键数据 通常理想的做法是使用共享存储库 例如 NIS 来存储用户和组信息 而不是将它们存储在 etc passwd 等平面文件中 那么这样做有
  • NumPy Meshgrid 从零到英雄

    Python 的 NumPy是处理数组 矩阵数据最常用的库 矩阵可以被视为二维值 网格 其中网格中每个值的位置由一对值 i j 给出 这些值表示该值在网格中的行号和列号 在本教程中 我们将了解如何使用 Python 中的 NumPy 库创建
  • Python 中的快速排序算法(逐步)

    在编程世界中 大多数问题的答案都可以在存储在各种数据结构中的数据中并借助一些标准算法找到 今天 我们将讨论快速排序算法以及如何在 Python 中实现它 在开始确定这些答案之前 您将需要一组数据 在许多情况下是排序数据 来执行进一步的计算
  • Python 优先级队列(分步指南)

    队列是一种按称为 FIFO 的顺序检索数据项的数据结构 先进先出 在 FIFO 中 第一个插入的元素将首先从队列中弹出 优先级队列是队列数据结构的高级版本 具有最高优先级的元素被放置在优先级队列的最顶部 并且是第一个被出列的元素 有时 队列
  • 如何检查 MySQL 数据库和表的大小

    MySQL是一种关系型数据库管理系统 广泛用作Linux系统的数据库系统 本文将帮助您通过 SQL 查询计算 MySQL 或 MariaDB 服务器中表和数据库的大小 MySQL将与数据库中的表相关的所有信息存储在information s
  • 如何更改 Azure 应用服务中的时区

    TimeZone 对于时间关键的应用程序起着重要作用 在这种情况下 您必须为正在运行的操作系统设置正确的时区 我们的一位用户询问有关在 Azure 应用服务中设置时区的问题 在本教程中 您将学习如何为运行的应用程序设置时区Azure 应用服
  • 如何在 Bash 中将标准错误存储到变量

    在 Bash 中 您可以使用以下命令将命令的标准错误输出存储到变量中 2 gt 1 运营商和 命令替换语法 这里 2 gt 将错误消息重定向到 1 代表标准输出 在 bash shell 的情况下 它作为标准输出设备 For example
  • C 程序求三个数字中最大的

    在本文中 我们将探讨计算机编程中一个常见且简单的问题 找到三个给定数字中最大的数字 我们用来解决这个问题的语言是 C 一种通用的过程计算机编程语言 C 提供了有效映射到典型机器指令所需的结构 换句话说 它是一种流行的系统编程语言 尽管它也用
  • 如何使用 DNF 将 Fedora 23 升级到 Fedora 24

    软呢帽24最终版本已发布于2016 年 6 月 21 日 Fedora 工作站用户可能需要升级工作站才能使用最新版本 本教程将帮助您将 Fedora 23 升级到 Fedora 24 工作站使用命令行实用程序 DNF 这是升级 Fedora
  • RDBMS 与 NoSQL:为您的项目选择正确的数据库

    为项目选择正确的数据库可能是一个关键决策 会极大地影响项目的成功 最流行的两类数据库是关系数据库管理系统 RDBMS 和 NoSQL 数据库 每种都有其优点和缺点 选择最终取决于项目的具体要求 本文将对 RDBMS 和 NoSQL 数据库进
  • 如何在 Linux 上设置 LogMeIn (Hamachi) VPN

    Hamachi 用于使用或设置 VPN 并通过 VPN 网络连接系统 这提供了一种快速 更简单的方法来创建 VPN 网络和连接系统 您可以在 logmein com 上创建免费帐户并创建网络 您可以使用免费帐户在每个网络中添加最多 5 个系
  • Java 技巧:将字符串转换为日期

    在 Java 编程领域 日期和时间操作是一项基本技能 但是 日期通常作为字符串传递 这需要将这些字符串转换为 Date 对象以进行有效操作 在本综合指南中 我们将详细介绍在 Java 中将字符串转换为日期的过程 了解基础知识 表示日期的字符
  • UFW:通用防火墙规则和命令

    防火墙是一种安全系统 它根据预定义的安全规则监视和控制传入和传出的网络流量 它是任何安全网络的重要组成部分 无论是个人计算机还是大型企业网络 Uncomplicated Firewall UFW 是一个用户友好的命令行界面 用于管理 ipt
  • 编辑 crontab 文件的要点

    在系统管理领域 有一种强大的工具可以让您高效地安排任务 crontab 使用 crontab 您可以在指定的日期和时间执行脚本和命令 这使其成为基于 Unix 的系统中非常有用的实用程序 但是 要充分利用其潜力 您需要了解编辑 cronta
  • 如何在 Linux 中创建交换文件

    交换文件是 Linux 操作系统的重要组件 它通过提供额外的虚拟内存来帮助提高性能 它是在系统物理内存 RAM 填满时保留用作虚拟内存的磁盘空间 在 Linux 中创建交换文件有助于防止系统崩溃和不稳定 在本文中 我们将逐步讨论如何在 Li
  • 如何在 phpMyAdmin 中添加多个主机

    phpMyAdmin 默认配置仅允许连接到本地 MySQL 服务器 但是如果我们运行多个数据库服务器 那么如果我们可以从单个 phpMyAdmin 安装中选择需要连接的服务器 那就太好了 本操作指南将帮助您在 phpMyAdmin 中添加多
  • Bash 选择(制作菜单)

    在本教程中 我们将介绍以下基础知识select在 Bash 中构建 The select构造允许您生成菜单 Bash select构造 The select构造从项目列表生成菜单 它的语法几乎与for loop select ITEM in
  • 如何在 CentOS 7 上安装和配置 Redmine

    Redmine 是最流行的开源项目管理和问题跟踪软件工具之一 它是跨平台和跨数据库的 构建在 Ruby on Rails 框架之上 Redmine包括对多个项目 wiki 问题跟踪系统 论坛 日历 电子邮件通知等的支持 在本教程中 我们将介
  • 如何在 Ubuntu 18.04 上部署 Rocket.Chat

    Rocket Chat 是一个开源团队交流平台 是自托管的 Slack 替代品 它使用 Meteor 框架开发 提供各种功能 包括帮助台聊天 文件共享 视频会议 语音消息 API 等 对于想要托管自己的聊天系统的公司和社区来说 Rocket
  • .bashrc 与 .bash_profile

    如果您在命令行上花费大量时间 您很可能想要自定义您的 shell 环境 这可能意味着创建别名 将新目录添加到 PATH 或更改 shell 提示符的外观 您可能遇到过一些教程 其中他们说将您的配置放在 bashrc bash profile