如果你平时在命令行上花费了大量时间,那么你可能会萌生出希望定制 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. canvas使用context.drawImage时图片不在画布上展示的问题

    遇到问题:找到图片img元素后,将参数传给context.drawImage(image,10,10)后图片并没有在画布上展示. 解决方案:在外层嵌套document.images[0].onload ...

  2. APP自动化 -- 框架

    一.框架源码 https://github.com/jiangnan27/Autotest_APP_Open 二.框架环境 python3 + appium1.15.3 + pytest5.3.5 三 ...

  3. Java方法(函数)

    4.1方法简介 方法是语句的集合,他们在一起执行一个功能: 1.方法是解决一类问题的步骤的有序组合(功能块) 2.方法包含于类与对象中 3.方法在程序中创建,在其它地方引用 4.原子性:单一职能原则( ...

  4. LQB2013A03振兴中华

    最近状态出了点问题呜呜呜,可能是天有点热吧加上有一点点不太舒服,,,稳住啊! 明显一个递归(但是就是不会写) 递归:(一般这种找有多少个的题,返回值都是int) 首先找变化的东西当作参数.(本题是坐标 ...

  5. sscanf,sprintf(思修课的收获)

    转载的,就是做个笔记 sprintf函数原型为 int sprintf(char *str, const char *format, ...).作用是格式化字符串,具体功能如下所示: (1)将数字变量 ...

  6. Servlet学习之Tomcat secretRequired配置报错问题

    Tomcat secretRequired配置问题 在启动Tomcat时,控制台可能会出现IllegalArgumentException异常,即"AJP连接器配置secretRequire ...

  7. 删除GIT中的.DS_Store

    转载自:https://www.jianshu.com/p/fdaa8be7f6c3 .DS_Store 是什么 使用 Mac 的用户可能会注意到,系统经常会自动在每个目录生成一个隐藏的 .DS_St ...

  8. KNN算法基本原理与sklearn实现

    ''' KNN 近邻算法,有监督学习算法 用于分类和回归 思路: 1.在样本空间中查找 k 个最相似或者距离最近的样本 2.根据这 k 个最相似的样本对未知样本进行分类 步骤: 1.对数据进行预处理 ...

  9. PDOStatement::fetchAll

    PDOStatement::fetchAll — 返回一个包含结果集中所有行的数组(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)高佣联盟 www.cgewang.c ...

  10. JavaScript正则表达式相关方法

    一.正则表达式方法 var str="abcdefabcdef"; (1)reg.test(str); 查看字符串是否有满足正则表达式的内容,并返回一个布尔值true/false ...