一、简介
我们在linux中进行各种操作,往往需要跟shell环境打交道,如果不了解shell环境是如何建立的,往往会遇到很多困惑。shell里面的环境是从配置文件里面读取的,配置文件主要包含:
(1)启动文件的配置脚本,这是所有用户共享的shell环境。
(2)主目录中的启动文件,用户个人的shell环境。
配置文件的读取顺序,取决于shell的会话类型,shell有两种会话类型,如下:
(1)登录shell会话
(2)非登录shell会话
下面将以bash为例来看看,这两种会话类型加载的配置文件。
二、登录shell会话会加载的配置文件配置
/etc/profile应用于所有用户的全局配置脚本
~/.bash_profile用户私有的启动文件,可以用来扩展或重写全局配置脚本中的设置。
~/.bash_login如果~/.bash_profile没有找到,bash会读取这个文件。
~/.profile如果~/.bash_profile和~/.bash_login都没有找到,bash会读取这个文件。
如下图:
二、非登录shell会话会加载的配置配置配置
/etc/bash.bashrc应用于所有用户的全局配置文件
~/.bashrc用户私有的配置文件,可以用来扩展或重写全局配置脚本中的设置
备注:非登录shell会话也会继承它们父进程的环境设置,通常是一个登录shell。
三、shell会话与su命令的关系
su 命令可以让我们在已登录的会话中切换到另外一个用户,那么是否会修改shell会话,是否会修改shell环境呢?
1、当时使用“su userName”形式
会切到到userName用户之后仍然保持旧的(或者说原始用户的)环境。
2、当时使用“su - userName”形式
参数“-” 可提供的环境为用户在直接登录时的环境,也就是说在使用su命令,若添加了“-” 参数,相当于创建一个以userName用户正常登录的环境。