login shell和non-login shell的区别

为什么要介绍并且比较区别呢?因为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还会调用其他文件)
下面来详细解析下这两个文件

  1. /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用户下执行)
  2. ~/.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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值