Shell的配置文件

当我们在linux中打开一个shell的时候,系统会读取相关的配置文件来初始化shell(其他unix-like OS也一样)。配置文件包括以下这些:

1. 全局配置(对所有用户都有效)

/etc/profile
/etc/bash.bashrc

2. 当前用户配置(仅对当前登录用户有效)

~/.bashrc
~/.bash_profile
~/.bash_login
~/.profile

Shell的分类

shell分为login shell和non-login shell两种

1.Login Shell

借用《鸟哥的linux私房菜》中的定义:取得 bash 時需要完整的登入流程的,就稱為 login shell。舉例來說,你要由 tty1 ~ tty6 登入,需要輸入使用者的帳號與密碼,此時取得的 bash 就稱為『 login shell 』囉;

除过上面获取login shell的方式外,我们还可以通过在non-login shell中运行

bash --login

来得到一个login shell。login shell启动时的配置文件读取流程如下:
借用另一博客 ‘Execution sequence for .bash_profile, .bashrc, .bash_login, .profile and .bash_logout’ 中的伪代码示例:

execute /etc/profile
IF ~/.bash_profile exists THEN
execute ~/.bash_profile
ELSE
IF ~/.bash_login exist THEN
execute ~/.bash_login
ELSE
IF ~/.profile exist THEN
execute ~/.profile
END IF
END IF
END IF

当我们退出或者注销login shell时,也有需要执行如下流程:

IF ~/.bash_logout exists THEN
execute ~/.bash_logout
END IF

2.Non-Login Shell

继续借用《鸟哥的linux私房菜》中的定义:取得 bash 介面的方法不需要重複登入的舉動,舉例來說,(1)你以 X window 登入 Linux 後, 再以 X 的圖形化介面啟動終端機,此時那個終端介面並沒有需要再次的輸入帳號與密碼,那個 bash 的環境就稱為 non-login shell了。(2)你在原本的 bash 環境下再次下達 bash 這個指令,同樣的也沒有輸入帳號密碼, 那第二個 bash (子程序) 也是 non-login shell 。

譬如在Ubuntu中,我们启动的Gnome Terminal,在默认情况下就是一个non-login shell。non-login shell启动时的配置文件读取流程:

execute /etc/bash.bashrc
IF ~/.bashrc exists THEN
execute ~/.bashrc
END IF

来源:http://reyesyang.info/articles/26-how-to-initialize-a-new-shell-in-unix-like-os

[转载]--类unix系统如何初始化shell的更多相关文章

  1. Unix及类Unix系统文本编辑器的介绍

    概述 Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性.VIM是纯粹的自由软件. Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Em ...

  2. Vi (Unix及Linux系统下标准的编辑器)VIM (Unix及类Unix系统文本编辑器)

    Vi是Unix及Linux系统下标准的编辑器.学会它后,您将在Linux的世界里畅行无阻.基本上vi可以分为三种状态,分别是命令模式.插入模式,和底行模式. vi编辑器是所有Unix及Linux系统下 ...

  3. linux入门--类UNIX系统详解

    有人说,这个世界上只有两种操作系统: UNIX 和类 UNIX 操作系统: 其它操作系统. 类 UNIX 系统(英文 Unix-like)既包括各种传统的 UNIX 系统,比如 FreeBSD.Ope ...

  4. 1.4 类UNIX系统是什么鬼?

    上节<UNIX和Linux的区别>中讲到了 UNIX 系统的历史,UNIX 是操作系统的开山鼻祖,是操作系统的发源地,后来的 Windows 和 Linux 都参考了 UNIX. 有人说, ...

  5. Linux 和类 Unix 系统上5个最佳开源备份工具

    转载:http://linux.cn/article-4623-weixin.html#rd?sukey=cbbc36a2500a2e6cb7678c4d38b691a9fa7403b259f898e ...

  6. Linux和类Unix系统上5个最佳开源备份工具

    一个好的备份最基本的目的就是为了能够从一些错误中恢复: 人为的失误 磁盘阵列或是硬盘故障 文件系统崩溃 数据中心被破坏等等. 所以,我为大家罗列了一些开源的软件备份工具. 当为一个企业选择备份工具的时 ...

  7. MinGW —— Minimalist GNU for Windows、Cygwin —— Windows 下的类 unix 系统

    0. 楔子 Windows 下显然是没有 gcc 编译器的.对于一些软件或者工具如果想要在 Windows 平台下运行,而又需要依赖 gcc 编译其中的一些基于 C/C++ 实现的代码. 此时就借助 ...

  8. rsync是类unix系统下的数据镜像备份工具

    http://baike.baidu.com/view/1183189.htm   Ubuntu安装: sudo apt-get install rsync RedHat: yum install r ...

  9. 类unix系统同步目录,却不同步目录中文件

    rsync -av --del -f '+ */' -f '- *' src/ dst/;用此条命令即可同步同主机间不同目录到一个位置,或是同步道不同主机同位置. 或是用以下命令: ssh 10.18 ...

随机推荐

  1. Linux下查看文件和文件夹大小(转)

    觉得挺有用的,就转到了自己的博客里,方便以后查询: 转自:http://www.cnblogs.com/benio/archive/2010/10/13/1849946.html 当磁盘大小超过标准时 ...

  2. js数据结构与算法存储结构

    数据结构(程序设计=数据结构+算法) 数据结构就是关系,没错,就是数据元素相互之间存在的一种或多种特定关系的集合. 传统上,我们把数据结构分为逻辑结构和物理结构. 逻辑结构:是指数据对象中数据元素之间 ...

  3. json 和 pickel 详解

    一.json json,用于字符串 和 python数据类型间进行转换 Json模块提供了四个功能:dumps.dump.loads.load 1.json.loads()用于将字符串形式的字典,列表 ...

  4. CA提供的身份认证配置弃用

    场景:从CA网站登录,在CA主页点击我们集成到CA的业务系统图标进行跳转,发现业务系统登录过身份(没cookies),身份认证自动使用 url,跳转到CA登录页,造成二次登录 [Authorize] ...

  5. 求编译器中数的最值(c++)

    #include <limits> //头文件 #include <iostream> using namespace std; int main() { cout <& ...

  6. 手游设备ID

    android: imei: IMEI(International Mobile Equipment Identity)是国际移动设备标识的缩写,IMEI由15位数字(英文字母)组成. mac: 是指 ...

  7. ORA-01810: 格式代码出现两次

    今天在修改SQL语句的时候遇到这个小问题,提示的还是比较明显的,当然解决之道我是从百度上摘取的! 错误语句段:AND V.UPLOAD_DATE <=TO_DATE ('2013-11-11 2 ...

  8. JavaBean和内省

    JavaBean和内省 JavaBean是一个遵循特定的写法的java类     1. 必须有一个无参的构造方法     2.属性私有化     3.私有你给的属性必须通过public类型的方法暴露给 ...

  9. 二模11day1解题报告

    T1.树的重量(weight) 给出一棵n个叶节点的树(但是有多组数据)以及n个节点之间的距离(最短距离...然而也只有一条路),求树的所有边权之和. 一开始完全没有思路啊...难道爆搜模拟??狂汗. ...

  10. 【缓存】.net中Cache管理操作

    隐藏行号 复制代码 ? 这是一段程序代码. using System; using System.Web; using System.Web.Caching; using System.Collect ...