Shell的分类(四种)
在提及Linux环境变量配置文件之前,需要先了解Shell的四种分类:
1.交互式Shell:交互式模式就是在终端上执行,Shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,Shell也终止了。
2.非交互式Shell:非交互式模式,以Shell Script(非交互)方式执行。在这种模式下,Shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,Shell也就终止了。
可以通过打印“$-”变量的值(代表着当前shell的选项标志),打印结果中,如果有i,则表示这是交互式Shell,其中的“i”选项(表示Interactive Shell)来区分交互式与非交互式Shell。
3.登陆式Shell:是需要用户名、密码登录后才能进入的Shell(或者通过--login”选项生成的shell),如su - root、newgrp mygroup,需要登录的用户(组)名,也需要用户(组)密码。
4.非登录式Shell:不需要用户名、密码登录就能进入的Shell,如sh、bash命令会直接开启一个新的Bash Shell命令窗口。
环境变量配置文件
根据全局/个人分类
全局配置文件
/etc/profile
/etc/profile.d/.sh*
/etc/bashrc
个人配置文件
/.bash_profile
/.bashrc
根据su - [username]/su [username]分类
su - [username]与su [username]的区别实际上是加载的环境变量配置文件不同,如果不加-,
一方面会少加载两个配置文件;另一方面登录后不会切换到用户的家目录中。
su - [username]加载的配置文件
会切换到家目录,加载的环境变量配置文件有5个。
/etc/profile
/etc/profile.d/.sh*
~/.bash_profile
~/.bashrc
/etc/bashrc
su [username]加载的配置文件
不会切换到家目录,加载的环境变量配置文件有3个。
/etc/profile.d/.sh*
~/.bashrc # 即使不切换到家目录中,也会加载此配置文件
/etc/bashrc