Chinaunix首页 | 论坛 | 博客
  • 博客访问: 144792
  • 博文数量: 69
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 595
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-16 00:00
个人简介

宁可逆流而上与众不同,也不顺风顺水随波逐流

文章分类

全部博文(69)

文章存档

2020年(1)

2018年(9)

2017年(43)

2016年(16)

我的朋友

分类: LINUX

2016-12-13 00:00:48

首先,shell分很多种,bash,zsh,sh等,# cat /etc/shells 可以查看你的系统有多少种shell,本文基于bash讨论。
interactive shell and non-interactive shell:
    这个很好理解,交互式shell就是你和它打交道的shell,我们通常登录并执行一些命令的就是交互式shell,而另一种就是直接执行脚本等不需要和用户交互的shell。非交互式shell读取的是profile文件,而交互式shell则要根据是login还是non-login来判断是读profile文件还是另一种文件。
login shell and non-login shell:
    初学的时候经常搞混,x window,以用户登录的bash,以root登录的bash等。当你开启电脑登录进的图形模式(on x window manager)并不是login shell,而是会话管理器或图形管理器,当你第一次打开shell登录后(有些默认已登)那就是login shell,而在这个shell里面再调用一个shell那刚调用的shell就是non-login shell。至于以root登录的其实就是 interactive and login shell。
bashrc and profile:
    一般系统中有/etc/profiles  /etc/bashrc  ~/.profile  ~/.bashrc  (不同系统文件名可能有点不同),非交互式shell读取的是profile类文件,而交互式shell要看情况:1、交互式shell是login shell则读取profile(/etc/profile and ~/.profile)类文件,且不会读取bashrc类文件,如果想读取就必须在它要读取的profile文件中加上source bashrc。2、交互式shell是non-login shell时读取bashrc(/etc/bashrc and ~/.bashrc)类文件。不是规定哪种shell的类型就只能读哪种类型的文件。如果你是login shell,那么你可以在它读取的profile文件中导入.bashrc文件。一下是我的ubuntu的profile中的部分代码:
  1. #include .bashrc if it include          这行是注释
  2. if [ -f "$HOME/.bashrc" ]; then
  3. . "$HOME/.bashrc"
  4. fi
参考链接
               
阅读(585) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~