为什么要介绍并且比较区别呢?因为login shell和non-login shell取得BASH的过程中,读取的配置文件数据并不一样,而想要针对所有用户或者单一用户设置环境,所需要的配置方法不同。
1.login shell
login shell:取得bash时需要完整的登录流程,就被称为login shell,简单来说就是使用者要从tty1~tty6登录时,需要输入用户的账号与密码,此时取得的bash就被称为login shell
login shell的读取流程:
/etc/profile ——> ~/.bash_profile ——>开始操作BASH (但是不仅代表只读了/etc/profile 和 ~/.bash_profile还会调用其他文件)
下面来详细解析下这两个文件
- /etc/profile (login shell才会读)
每个用户登录取得bash时一定会读取的配置文件。所以如果你想要帮所有用户设置整体环境,就在这里修改。
常用的设置变量有:
PATH:决定了shell将到哪些目录中寻找命令或程序
HISTSIZE:是指保存历史命令记录的条数
HOSTNAME:是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。
LANG/LANGUGE:是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
(通常都是在文件最后 使用export 添加变量)
ls -a例如 export PATH=/usr/local/arm/arm-2009q3/bin:$PATH
想要立即生效 # . /etc/profile 或者 # source /etc/profile(#代表是root用户下执行) - ~/.bash_profile(login shell才会读)
在login shell的bash环境中,所读取的个人偏好设置文件其实主要有三个,依序分别是
1~/.bash_profile
2 ~/.bash_profile
3~/.profile
其实bash的login shell设置只会读取上面三个的其中一个,而读取顺序是按照上面的,也就是说如果~/.bash_profile存在,那么其他两个无论存不存在都不会被读取。
而更有趣的是这三个文件基本都有这个代码
这段的内容是判断主文件夹下的~/.bashrc是否存在,如果存在则读入 ~/.bashrc的设置。(所以说用户文件夹有.bashrc存在,则在登录时便可以获取.bashrc的内容,包括里面export的命令)
2.non-login shell
non-login shell:
1.利用CTRL+ALT+T打开shell终端
2.在里面输入BASH进入BASH子进程中
3.特别的利用SHELL 命令su来切换成root也是,正确做法应该是su - 来切换成root (因为root不属于个人用户了)
也就是non-longin shell
non-login shell的读取流程
non-login shell只会读取~/.bashrc这个文件
里面通常使用的变量是export 和 alias 一般都是与个人用户相关的设置(环境变量)。
想要立即生效同样采用source或者.(中间有空格).bashrc