non-login shell/login shell

linux 环境配置文件

  ~/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。.bashrc文件主要保存个人的一些个性化设置,如命令别名、路径等。也即在同一个服务器上,只对某个用户的个性化设置相关。它是一个隐藏文件,需要使用ls -a来查看。在linux系统普通用户目录(cd /home/xxx)或root用户目录(cd /root)下,用指令ls -al可以看到4个隐藏文件:
   .bash_history 记录之前输入的命令
   .bash_logout 当你退出时执行的命令
   .bash_profile 当你登入shell时执行
   .bashrc 当你登入shell时执行

  请注意后两个的区别:’.bash_profile’只在会话开始时被读取一次,而’.bashrc’则每次打开新的终端时,都要被读取。这些文件是每一位用户对终端功能和属性设置,修改.bashrc可以改变环境变量PATH、别名alias和提示符。具体如何修改会在下面做介绍。
  除了可以修改用户目录下的.bashrc文件外,还可以修改如“/etc/profile”文件、“/etc/bashrc”文件及目录“/etc /profile.d”下的文件。但是修改/etc路径下的配置文件将会应用到整个系统,属于系统级的配置,而修改用户目录下的.bashrc则只是限制在用户应用上,属于用户级设置。两者在应用范围上有所区别,建议如需修改的话,修改用户目录下的.bashrc,即无需root权限,也不会影响其他用户。

login shell

  login shell:用户通过终端登录凭借用户名和密码登录控制台的动作是login shell,也就是说最终会调用login命令的操作都可称之为login shell。login shell,登录shell,即init 3启动linux后,需要输入用户名和密码,进入的shell就是loginshell。 注意:在shell里使用su - user_name 切换用户输入账号密码,登录的shell也是login shell。login shell会读取的文件有:/etc/profile、HOME/.bash_profile,HOME/.bash_login,$HOME/.profile,按以上顺序读取。

即对于login shell读取文件的顺序是:

1. /etc/profile
2. ~/.bash_profile
3. ~/.bash_login
4. ~/.profile

  /etc/profile 是必须要执行的,然后后面3个,按照顺序谁存在就执行谁,然后后面的就不会再执行。对于~/.bashrc,是在non login shell 启动时执行,也就意味着在图形界面每开启一次terminal,就会读取一次该文件

non-login shell:

  用户在图形界面启动一个terminal,或者执行/bin/bash,/usr/bin/bash都属于non-login shell。 no login shell有,在login shell中输入bash,没有输入用户名和密码,那么这个就是no login shell。 在图形界面下,打开一个shell也是no login shell。no login shell 在打开的时候,执行的文件是$HOME/.bashrc,

non-login shell/login shell