如果你平时在命令行上花费了大量时间,那么你可能会萌生出希望定制 Shell 环境的想法。今天本文就和大家讲解该如何实现你们的这个想法。其实可以通过创建别名、向环境变量 $PATH 添加新目录或更改 Shell 提示符的外观以实现在命令行上节约时间。

在你寻找解决方法的过程中可能会看到过一些教程,比如说将配置文件放在 .bashrc 或者 .bash_ profile 中,亦或是将配置放在另一个可以通过 Bash Shell 读取和执行的文件中。

接下来,我将向大家讲解 Bash 启动文件以及 .bashrc.bash_ profile 之间的区别:

Interactive Login 和 Non-Login Shell

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

其实,Shell 可以是交互式的,也可以是非交互式的。简单一点地说,交互式 Shell 是一种读写用户终端的 Shell,而非交互式 Shell 完全是与终端无关的 Shell。 值得注意的是,交互式 Shell 可以是登录 Shell ,也可以是非登录 Shell

有几种情况可以调用登录 Shell,一种是当用户通过 ssh 或本地方式远程登录到终端,还有就是使用 --login 选项启动 Bash 。比如在 Shell 提示符中键入 bash 或打开新的 Gnome 终端选项卡时。交互式非登录 Shell 从登录 Shell 调用。

Bash启动文件

Bash 作为交互式登录 Shell 被调用时,它将查找 /etc/profile 文件,如果该文件存在,它将运行文件中列出的命令。然后 Bash 按以下的顺序搜索 ~/.bash_profile~/.bash_login~/.profile 文件,并在第一个找到的文件中执行命令。

Bash 作为交互式非登录 Shell 被调用时,它从 ~/.bashrc 文件读取并执行命令,需要指出的是该文件必须存在并且它是可读的才行。

.bashrc 和 .bash_配置文件之间的差异

Bash 作为交互式登录 Shell 被调用的情况下,.bash_profile 才会被读取、执行,而 .bashrc 是启动交互式非登录 Shell 时才被执行的。一般使用 .bash_profile 来运行只运行一次的命令,比如运行自定义环境变量 PATH 的命令。

每次启动新 Shell 时应该将运行的命令放在 .bashrc 文件中,这些命令包括别名和函数、自定义提示、历史自定义等。

通常,~/.bash_profile 包含的命令来源于 .bashrc 文件中,示例如下:

这意味着每次登录到终端时,上面两个文件都会被读取并执行其中的命令。

大多数 Linux 发行版都是使用 ~/.profile 而不是 ~/.bash_profile。因为 ~/.profile 文件可以被所有 Shell 读取,而 ~/.bash_ profile 仅能被 Bash Shell 读取。

如果你的系统上没有我上面所讲的这些启动文件,那么你也可以自己创建它们。

结论

最后,总结一下今天我们所讲的重点。.bash_profile.bashrc 是在调用 Bash 时运行的包含 Shell 命令的文件。.bash_profile 可以在交互式登录 Shell 上被读取和执行,而 .bashrc 可以在非登录 Shell 上被读取和执行。

如果你还对 .bashrc 这些文件有疑问或是有修改 Shell 提示符的更好的方法,请留言告诉我呗!


公众号:良许Linux

有收获?希望老铁们来个三连击,给更多的人看到这篇文章

Linux中.bashrc与.bash_profile的对比的更多相关文章

  1. linux中bashrc与profile的区别

    bashrc与profile的区别 要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shell 和non-login shell. ...

  2. linux中 bashrc文件的alias添加快捷命令

    alias (为了简化命令操作,节省时间) 进入 /home下的用户,假设为 web 执行命令 ls -alh   找到 .bashrc 隐藏文件,如果没有则新建 通过  vi .bashrc  在里 ...

  3. Linux 中 bashrc 中的 rc 是什么意思

    刚刚配置 .bashrc 文件时,突然想,这里面的 rc 是什么意思? 使用了这么长时间,这个都不知道,这是醉了.Google 之,还真有不少人探究过,哈哈. 这个 ubuntu 中文论坛里,有人回答 ...

  4. linux中.bashrc 等文件中的rc是什么意思

    英文原义:RC (run command)中文释义:含有程序(应用程序甚至操作系统)启动指令的脚本文件 注 解:这一文件在操作系统启动时会自动执行,它含有要运行的指令(命令或其它脚本)列表. 相当于w ...

  5. Linux中profile与bashrc的作用

    文章同步发表在博主网站朗度云,传输门:http://www.wolfbe.com/detail/201608/278.html 在Linux系统上,我们会看到类似于profile和bashrc的文件, ...

  6. linux的/etc/profile、~/.profile、~/.bashrc、~./bash_profile这几个配置文件

    在添加环境变量的时候,我们会去修改配置文件 如果留意过,网上博文,有些在/etc/profile文件中配置的,有些是在~./bash_profile文件中配置的,等等 那么,/etc/profile. ...

  7. Linux 启动时profile、bashrc、~/.bash_profile、~/.bashrc、~/.bash_profile执行顺序以及文件说明

    Linux 启动时profile.bashrc.~/.bash_profile.~/.bashrc.~/.bash_profile执行顺序以及文件说明 一.执行顺序 登录linux时,/etc/pro ...

  8. Linux系统profile、bashrc、bash_profile等环境设置文件的使用

    一.前言 关于bash的环境设置文件,分为系统设置和个人设置,一般来说建议用户直接修改个人的设置. 本文测试环境为:centos6.5. 二.系统设置值 1. /etc/sysconfig/i18n ...

  9. Linux的环境变量.bash_profile .bashrc profile文件

    Shell变量有局部变量.环境变量之分.局部变量就是指在某个Shell中生效的变量,只在此次登录中有效.环境变量通常又称“全局变量”,虽然在Shell中变量默认就是全局的,但是为了让子Shall继承当 ...

随机推荐

  1. 学会Markdown不仅可以用来编写文档,还可以制作自己的简历,真香!

    程序员的简历要简洁明了,不要太多花哨的修饰,突出重点即可,使用markdown就可以很好的满足写一份简历的需求 Markdown 简历模板 这里我贡献一下我自己的markdown简历模板,简历效果如下 ...

  2. 使用 forever 启动 vue 需要注意的问题

    forever 是 nodejs 生态中一个用来永久挂起一个应用(当这个应用崩溃时能自己重启)的应用(库). 但用他启动vue的时候必须注意一个问题: 在哪个路径启动vue,就在哪个路径启动forev ...

  3. StringBuffer类和StringBuilder类

    StringBuffer类和StringBuilder类 三者比较 String 不可变字符序列 底层用char[]存储 StringBuffer 可变的字符序列 线程安全的 效率低 底层结构使用ch ...

  4. Pollard-Rho

    \(code:\) ll pri[12]={2,3,5,7,11,13,17,19}; ll mul(ll x,ll y,ll mod) { ll c=(long double)x*y/mod+0.5 ...

  5. SQL Server数据类型对应.Net Core中的数据类型

    SQL C# bigint(sql大小:8byte) long(64位) int, integer(sql大小:4byte) int(32位) smallint(sql大小:2byte) short( ...

  6. Go语言的跳跃表(SkipList)实现

    之所以会有这篇文章,是因为我在学习Go语言跳表代码实现的过程中,产生过一些困惑,但网上的大家都不喜欢写注释- - 我的代码注释一向是写的很全的,所以发出来供后来者学习参考. 本文假设你已经理解了跳表的 ...

  7. 【CVPR2020】Wavelet Integrated CNNs for Noise-Robust Image Classification

    深度学习中的下采样(max-pooing, average-pooling, strided-convolution)通常会有两个不足:破坏了目标的基本结构.放大随机噪声.上采样操作同样容易受到影响. ...

  8. 修改了数据库文件可以识别是否最新,按数据库文件名20181217.db,日期名作文件名时间戳

    修改了数据库文件可以识别是否最新,按数据库文件名20181217.db,日期名作文件名时间戳 压缩包device.rar上传到邮箱

  9. form-create 组件生成规则说明

    本文介绍form-create生成规则与组件的关系 form-create 是一个可以通过 JSON 生成具有动态渲染.数据收集.验证和提交功能的表单生成器.并且支持生成任何 Vue 组件.结合内置1 ...

  10. 使用MacOS自带的SVN客户端

    原文链接:https://jingyan.baidu.com/article/5552ef479c1554518ffbc92f.html 摘要:mac环境下有自带的SVN服务端和客户端,SVN是许多公 ...