转载自: http://blog.csdn.net/sfhawx/article/details/49969321

在Linux中我们知道当你输入一条命令的时候,命令的查找是根据环境变量PATH来查找的,如果想知道一个命令的源文件存放在什么地方可以用which或whereis指令。那么PATH变量是在什么时候初始化呢?还有其他的许许多多的环境变量都是在什么时候初始化呢?看完下边介绍的login shell和non-login shell想必你会明白的, login shell和non-login shell取得的环境变量是不一致的。

一、login shell

login shell是说在取得bash时需要完整的登陆流程。什么时候取得bash呢?当然就是用户登陆的时候。当你在tty1~tty6登陆,需要输入账号和密码,此时取得的bash就是login shell。

那这个login shell具体会读那些配置文件呢?

1. 、etc/profile: 这是系统的整体设置, 如果你修改了这个文件,任何用户登陆时候都会按照你的修改改变,建议不要修改这个文件。每个用户登陆取得bash的时候都会读取这个文件,可以用vi来打开这个script读一下。根据你的UID读取PATH, MAIL, USER,LOGNAME, HOSTNAME, HISTSIZE等设置。然后设置你的umask的值,然后是读取/etc/profile.d/*.sh中的一系列文件。这个目录下主要规定了语系,颜色,vi的命令别名等,具体可以查看这个文件夹。这个是我的/etc/profile做的事情,咱们的可不一定一样哦。

有的说还会读取/etc/inputrc,/etc/sysconfig/i18n等,当然不同的系统配置当然不一样了,如果想深入学习的话可以读一下这个文件的shell,看一下具体都做了哪些问题。

2、 ~/.bash_profile 或 ~/.bash_login 或~/.profile

其实上边的这个三个文件只会读取一个的,如果存在~/.bash_profile就不会读取后两个; 如果不存在, 则读取~/.bash_login, 如果~/.bash_login存在的话就不会读取~/.profile; 如果~/.bash_login不存在则读取~/.profile。不同的系统,这三个文件的存在情况不一样。这三个文件属于用户个人偏好设置,如果你要配置个人的环境,就修改这里边就可以了。

我们可以去读一下这三个文件看看帮我们干了些什么事情,我们用vi打开对应的shellscript, 发现其实只帮我们做了一下判断~/.bashrc这个文件是不是存在,如果存在的话,读取这个文件。我们用vi打开~/.bashrc, 在~/.bashrc中,也只帮我们做了一件事情就是判断/etc/bashrc是否存在,存在的话读取/etc/bashrc。然后我们去读一下/etc/bashrc中的shell源码,发现在/etc/bashrc中帮我们做了几件事情,设置umask,设置PS1(就是命令提示符前边的一部分字符的格式),读取/etc/profile.d/*.sh等。是不是和/etc/profile做的事情差不多。

二、non-login shell

non-login shell就是取得bash不需要重复登录,就像你在桌面视图中用ctrl+alt+T启动的shell输入窗口就是non-login shell。还有就是你在shell窗口直接su切换的用户,都属于non-login shell。

non-login shell只会读取~/.bashrc这个文件,具体步骤和上边一样。

如果我们修改了我们的~/.bashrc如果想让配置立即生效,我们只需要用source命令。例如:$ source ~/.bashrc

三、su和sudo命令

平常我们切换root的时候一般直接su, 这样是不对的,因为我们如果直接su的话,有上边我们的分析是不会读取/etc/profile的,所以你的环境变量PATH,MAIL等是不会改变的,此时是non-login shell, 如果想读取/etc/profile的话我们需要用

# su - 

我们切换其他用户的时候,加入切换到wukong,我们一般直接su wukong,这都是不对的,切换到一般用户我们需要用

# su -l wukong

才会读取~/.bash_profile等文件。现在知道怎么使用su命令了吧。

sudo命令的配置在/etc/sudoers中, 我们可以用visudo命令直接打开这个文件,或者用vi /etc/sudoers命令打开进行配置。此命令是让我们暂时取得root权限,当然还有需要权限可以增加,在此我们就不一一介绍了。还有当你添加一个用户,但是不想让其取得可登陆shell的时候可以在/etc/passwd中把其shell设置成/sbin/nologin,或者用chsh命令。

下一篇博客介绍文件结构和文件常用的系统调用函数。时间定于2015.11.22日晚。

login shell和non-login shell相关推荐

  1. shell从入门到精通(25)你知道什么是login shell和non login shell吗

    bash有几种不同的运行模式,login shell与non-login shell,interactive shell与non-interactive shell(比如执行shell脚本).这两种分 ...

  2. linux 非登录shell自动,Linux登录shell和非登录(交互式shell)环境变量配置

    使用Jenkins执行shell脚本的时候, 碰到command not found. 比如java mvn, 这些环境变量配置在/etc/profile 中, 但jenkins执行的时候并没有加载. ...

  3. linux 查看 shell进程,Linux之shell 和进程

    导读 shell和进程的关系:我们从login shell 说起,login shell用于表示登陆进程,是指用户刚登录系统时,由系统创建,用以运行shell 的进程. 这里先运行几个命令: 打印登陆 ...

  4. 【shell笔记】Linux Shell脚本编程入门知识点全面涵盖

    本文是我对白树明老师shell课程笔记的总结,课程链接:https://www.bilibili.com/video/BV1j541157Sr?from=search&seid=9757674 ...

  5. 交互式shell和非交互式shell、登录shell和非登录shell

    交互式shell和非交互式shell.登录shell和非登录shell: 我们在图形交互界面操作时,是交互式的,先理解交互式下的登陆和非登录概念: 概念 举例 特点 登陆shell 用户登陆时,输入用 ...

  6. linux shell 网页,Linux上shell命令

    Linux上shell命令 Linux上shell命令 日期:2014-05-16 浏览次数:20328 次 Linux下shell命令 Linux下shell命令 adduser 创建新的用户账户 ...

  7. 快速了解登陆shell与非登陆shell的区别

    快速了解登陆shell与非登陆shell的区别 Linux的环境变量的配置位置 登陆shell与非登陆shell 两种shell的区别 环境变量的配置总结 Linux的环境变量的配置位置 Linux的 ...

  8. jenkins执行shell文件_jenkins执行shell加载环境变量

    1. jenkins执行shell默认参数为bash -xe,先了解下面基础知识 1.1 什么是交互式shell(interactive shell)和非交互式shell(non-interactiv ...

  9. Linux高级专题详解--shell编程大全(shell变量,if语句,case语句,for循环,while循环,函数调用,数组,正则表达式,shell脚本三剑客--grep,sed,awk家族)

    shell编程 初始shell 程序 语言 编程 ---------------------------------- 语言 自然语言:汉语.英语 计算机语言:c语言.c++.(java php py ...

  10. apache php 执行shell,PHP执行普通shell命令流程解析

    这里演示一些普通的shell命令 php执行shell命令,可以使用下面几个函数: string system ( string $command [, int &$return_var ] ...

最新文章

  1. LeetCode简单题之反转字符串
  2. Firefox 插件:鲜味 del.icio.us,和朋友分享你的收藏
  3. 分治法之循环赛日程表
  4. SAP Data Intelligence Graph json源代码的结构分析
  5. [ZJOI2014] 星系调查(树上差分 + 数学推式子)
  6. 组件的v-model Mixin extends
  7. keil5调试如何选择晶振_答题攻略:晶振电路问题解答及国庆中秋放假通知
  8. Matcher的group()/group(int group)/groupCount()用法介绍
  9. Catharanthus roseus(长春花碱)的生物合成
  10. linux服务之irqbalance
  11. 国内优秀论坛之大汇集
  12. transition过渡的基本使用
  13. 关于“企业文化”的联想
  14. 温度传感器Pt100 热电阻的原理
  15. 【优雅的避坑】不安全!别再共享SimpleDateFormat变量了
  16. word中最后一行留白太多
  17. GLES2.0中文API-glCompressedTexImage2D
  18. 通过本地客户端连接GoogleCloud的Linux虚拟机
  19. shader着色器基础课08-20
  20. P2294 [HNOI2005]狡猾的商人(带权并查集+前缀和)

热门文章

  1. 学习总结——按下按键灯亮,再次按下按键,灯灭
  2. git使用进阶(一)——工作区和log
  3. MBR15200FAC-ASEMI塑封肖特基二极管MBR15200FAC
  4. VMware ESXi支持配置最大值
  5. 数据体系的四个层次:数据采集、数据计算、数据服务和数据应用
  6. wing101 缩进不管用_与lg wing一起使用最有用的双屏手机
  7. 2022KDD预讲 | 11位一作学者带你提前解锁优秀论文
  8. U盘装系统:魔方U盘启动制作
  9. Casbin入选2022 Google编程之夏
  10. 混战多年,K12在线教育的故事讲到哪了?