linux 环境变量区别

login shell 和 non-login shell 的区别

login shell:取得bash时需要完整的登录流程。就是说通过输入账号和密码登录系统,此时取得的shell称为login shell

non-login shell:取得sbash接口的方法不需要重复登录的举动。如以X Window登录登录linux后,再以X的图形界面启动终端机,此时那个终端机并没有需要输入账号和密码,那个bash环境就是non-login shell。在原本的bash环境下再次执行bash命令,同样也没有输入账号密码就进入新的bash环境(前一个bash的子进程),新的bash也是non-login shell

/etc/profile 全局(公有)配置,不管是哪个用户,登录时都会读取该文件

/etc/bashrc 与之对应的是/etc/bash.bashrc,它也是全局的,bash执行时,不管是何种方式,都会读取此文件

~/.profile 若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile;另外,图形模式登录时,此文件将被读取,即使存在~/.bash_profile和~/.bash_login

~/.bash_login 若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~/.bash_login,若前两者都不存在,则读取~/.profile

~/.bash_profile 当bash是以login形式执行时,才会读取此文件。通常该配置文件还会配置成去读取~/.bashrc

~/.bashrc 当bash是以non-login形式执行时,读取此文件。若是以login形式执行,则不会读取此文件

~/.bash_logout 注销时,且是login形式,此文件才会读取。也就是说,在文本模式注销时,此文件会被读取,图形模式注销时,此文件不会被读取

相关推荐