登录式Shell与非登录式Shell

一、区别

登录式Shell,是通过用户和密码的方式登录的Shell

非登录式Shell,不需要用户和密码的方式进入的Shell

执行exit命令时,可以退出登录式shell和非登录式Shell。

执行exit命令时,可以退出登录式shell和非登录式Shell。

执行exit命令时,可以退出登录式shell和非登录式Shell。

非登录式Shell,不需要用户和密码的方式进入的Shell。

执行logout命令时,只能退出登陆式Shell,不能退出非登陆式Shell。

执行脚本时,其实就是一个非登陆式shell

非登录式Shell不会执行/etc/profile这个文件

 

二、系统配置文件读取顺序

1.配置文件的执行顺序

/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> /etc/bashrc --> ~/.bashrc

2.登录式Shell的配置文件执行顺序

/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

3.非登登录式Shell配置文件执行顺序

~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

 

三、配置文件区别

  • /etc/profile: 设定的变量是全局的,可以做用于任何用户。当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。
  • /etc/bashrc:为每一个运行bash shell的用户执行此文件。当bash shell被打开时,该文件被读取。
  • ~/.bash_profile:针对单个用户设置变量。当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
  • ~/.bashrc:针对单个用户设置变量。当登录时以及每次打开新的shell时,该文件被读取.(每个用户都有一个.bashrc文件,在用户目录下)
  • ~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 
点赞

发表回复