前言

Ubuntu下默认shell为bash(The Bourne Again Shell)。也就是说bash是shell的一种。

Login与Non-Login

linux 有两种登录shell:login和nologin:

login shell

登录shell时需要完整的登录流程,称为 login shell。何为完整:输入用户名和密码。例如:走tty1-tty6控制终端,或走ssh等伪终端远程登入。

non-login shell

登入shell时不需要输入帐号信息。例如在X11下,打开伪终端,或者在shell下,进入shell子进程。

环境配置文件

/etc/profile
/etc/environment
/etc/bashrc

Login方式执行shell时,将读取以下三个文件中的一个(只读一个,优先级按顺序)。
~/.bash_profile
~/.bash_login
~/.profile

Login方式执行shell后退出时,执行该文件。
~/.bash_logout

Non-login方式执行shell时,读取该文件。Login方式不读。
~/.bashrc

注意!

一般我们打开终端都是以non-login的方式。默认使用bash的情况下,将读取~/.bashrc。

但是,当shell不是bash的时候,比如使用的是zsh,那么读取的配置文件就不是/.bashrc了,而是这个shell对应的配置文件,比如zsh对应的是/.zshrc文件。

总结出来就是:每个不同的shell在non-login模式下有不同的环境变量配置文件。

  • bash -> ~/.bashrc
  • zsh -> ~/.zshrc

修改环境变量等值,应该在对应的配置文件中修改,确保修改正确。