菜鸟学Linux - bash的配置文件
bash是各大Linux发行版都支持的shell。当我们登陆bash的时候,虽然我们什么都没做,但是我们已经可以在bash中调用各种各样的环境变量了。这是因为,系统中已经定义了一系列的配置文件,以及加载这些配置文件的规则。下面通过CentOS举例说明。在这之前,我们需要了解两个概念:login shell与non-login shell。很明显,这二者的区别在于需不需要login,同时这两种shell加载配置文件的规则也不相同。
login shell:通俗的讲,当我们登陆shell时,需要输入完整的登陆信息,也就是需要用户名和密码
non-login shell:与login shell相反,登陆shell时不需要输入登陆信息。例如:在现有的bash上,启动一个新的bash;登陆X Window后,启动一个bash。上述二者都是不需要输入登陆信息。
下面我们开始了解bash的配置文件:
/etc/profile:系统级别或者说全局的设置。一般不建议我们去修改这个文件。我们也可以从这个文件的注释中,得到更多的信息(例如,如何自定义配置)。如下图:
/etc/inputrc:为特定的情况处理键盘映射,例如bash的热键。/etc/profile中会判断是否有用户自定义的inputrc,如果没有就将设置INPUTRC=/etc/inputrc (备注:看了CentOS 6.5的/etc/profile,已经没有加载/etc/inputrc的代码了。这点有待考究)
/etc/profile.d/*.sh:一些shell的设置以及用户自定义的配置可以放在这
/etc/sysconfig/i18n:定义了bash使用的语言以及编码
~/.bash_profile、~/.bash_login、~/.profile:这三个文件都是属于用户的自定义文件。然后bash只有读取其中一个并忽略其他两个。规则是,第一个存在,就会忽略后面两个,以此类推。
~/.bashrc:这个文件将由~/.bash_profile加载
具体的配置文件加载了哪些东西以及定义了哪些环境变量,可以打开具体的配置文件查看。说完了这些配置文件,就来说说login shell与non-login shell加载配置文件的规则了。
non-login shell加载配置文件的规则很简单,它仅仅加载~/.bashrc。(如果/etc/bashrc存在,那么/etc/bashrc也会被加载,如下图所示)

login shell加载配置文件的规则稍微复杂一点,可用下图表示(实线代表主流程,虚线代表调用配置文件)

菜鸟学Linux - bash的配置文件的更多相关文章
- 【菜鸟学Linux】Cron Job定期删除Log(日志)文件
以前一直做Windows开发,近期的项目中要求使用Linux.作为小菜鸟一枚,赶紧买了一本经典书<鸟哥的Linux私房菜>学习.最近刚好有一个小任务 - 由于产品产生的Log很多,而且增长 ...
- 菜鸟学Linux命令:lsof命令 查找指定用户、进程、端口打开的文件
lsof,list open files, 是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件. 命令格式:ls ...
- 菜鸟学Linux - 变量基本规则
变量是一个很重要的概念,无论是bash脚本还是其他语言,都是如此.在bash中,创建变量很简单,给变量一个名称即可.默认情况下,变量的值为空.我们可以通过等号为变量赋值.需要注意的是,变量和变量的值不 ...
- 菜鸟学Linux命令:nohup命令启动程序
在UNIX/LINUX中,普通进程用&符号放到后台运行,如果启动该程序的控制台logout,则该进程随即终止. 要实现守护进程,一种方法是按守护进程的规则去编程,比较麻烦:另一种方法是仍然用普 ...
- 菜鸟学Linux命令:tar命令 压缩与解压缩
tar命令可以为linux的文件和目录创建档案.利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件. tar最初被用来在磁带上创建档案,现在,用户可以 ...
- 菜鸟学Linux命令:ssh命令 远程登录
1.查看SSH客户端版本 有的时候需要确认一下SSH客户端及其相应的版本号.使用ssh -V命令可以得到版本号.需要注意的是,Linux一般自带的是OpenSSH: 下面的例子即表明该系统正在使用Op ...
- 菜鸟学Linux命令:chmod命令和数字文件权限
chmod是一条在Unix系统中用于控制用户对文件的权限的命令(change mode单词前缀的组合)和函数.只有文件所有者和超级用户可以修改文件或目录的权限.可以使用绝对模式,符号模式指定文件的权限 ...
- 菜鸟学Linux命令:find命令 查找文件
find命令是Linux下最常用的命令之一,灵活的使用find命令,你会发现查找文件变得十分简单. 命令格式 find [指定查找目录] [查找规则(选项)] [查找完后执行的动作] 参数规则 - ...
- 菜鸟学Linux命令:grep配合ls等使用
linux grep命令 (global search regular expression(RE) and print out the line )是一种强大的文本搜索工具,它能使用正则表达式搜索文 ...
随机推荐
- DataBinding 访问 3
MVVM中的Model 我们可以用任何POJO 作为 data binding 的 Model, 但是直接修改POJO对象,不能直接更新UI android的 dataBinding 模块 给提供了通 ...
- 本地添加Maven管理
Maven下载安装: 1 .Maven下载地址:http://maven.apache.org/ 2 .下载解压到本地指定目录:记住该路径! 3 .新建/修改环境变量-系统变量: 名:M2_HOME ...
- jQuery知识重构
jQuery知识重构 目录: 一.入口函数 1 $(document).ready(function(){}); 2 $(function(){}); jQuery ...
- C#中描述mssql中DateTime的最小值、最大值
首先引用System.Data.SqlTypes 最小值:SqlDateTime.MinValue.Value 最大值:SqlDateTime.MaxValue.Value
- 【java】使用URL和CookieManager爬取页面的验证码和cookie并保存
使用java的net包和io包下的几个工具爬取页面的验证码图片并保存到本地. 然后可以把获取的cookie保存下来,做进一步处理.比如通过识别验证码,进一步使用验证码和用户名,密码,保存下来的cook ...
- 【转/TCP协议编程】 基于TCP的Socket 编程
基于TCP(面向连接)的socket编程,分为客户端和服务器端. 客户端的流程如下: (1)创建套接字(socket) (2)向服务器发出连接请求(connect) (3)和服务器端进行通信(send ...
- GBase数据库存储过程——批量查询多个数据表的磁盘占用情况
--清理历史表,可选 DROP TABLE IF EXISTS `dap_model`.`data_statics`; CREATE TABLE `dba`.`data_statics` ( `TAB ...
- netcat 详解
简介 netcat 是一款调试 TCP/UDP 网络连接的利器,常被称作网络调试的瑞士军刀,可见其功能强大. netcat 在 Linux, Windows 等各大操作系统上都有对应等发行版,以下以 ...
- 调试工具DEBUG的使用(8086)
有关CPU和存储单元的概念在前一节我们已经了解,那么如何观察实际机器内部的情况呢?能不能看到具体的寄存器.标志.存储单元的内容呢?可不可以修改和控制它们呢? DEBUG这个有力工具,就可以深入到机器内 ...
- DOS&8086微处理器
DOS DOS环境,需要安装dosemu来模拟DOS环境(Ubuntu的应用商店就有),为了编写汇编,还需要DEBUG.MASM.LINK等汇编语言开发工具.如果你嫌麻烦,推荐使用实验楼已搭好的免费的 ...