1)我们以deepin为例子,除了可以通过图形界面tty7登录以外, tty1-tty6也是可以登录的是,只不过是没有界面的都是通过命令行来进行操作(如果你当前位于图形模式下,可以通过 ctrl + alt + f1 - f6来切换)。
当我们位于命令行模式的时候,该模式下会显示一些基本的信息在前几行。这个显示的内容我们是可以定制的.
定制该信息的文件位于:
/etc/issue
/etc/issue.net
/etc/motd
我们可以看到这3个文件下的内容还是不同的! 实际上这3个文件的具体功能也是不同.
/etc/issue: 该文件主要是用户通过 tty1-tty6登录linux的时候显示在前面的提示信息.
/etc/issue.net: 是用户通过talent远程连接到linux的时候会显示的提示信息.
注意到了吧 /etc/issue 和 /etc/issue.net都是在登录前显示的提示信息.
/etc/motd: 则是在用户登录成功后显示的信息.
2) 当我们登录进去linux后,我们会立即获得很多的可用的环境变量,那么这个环境变量是从哪来的呢? 我们能否配置它呢?
echo ${PATH}
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin
这是笔者电脑下面的PATH这个变量里面的值,可以看到是用 : 来作为分割几个路径.
1,为什么会这样呢?
这是因为系统有一些环境配置方案存在,在bsh启动的时候会直接读取这些配置文件,以配置好bash的环境.
这些配置又分为全局配置,以及个人配置.
全局配置: 顾名思义所有使用这台linux的用户都能使用配置.
个人配置: 仅当前登入的用户才能使用的配置,如果切换了用户那么该配置就不存在了.
2,在正式进入正题之前我们首先明确2个概念:login shell 和 no-login shell:
login shell: 在非界面登录的模式下,比如通过tty1-tty6来进行登录,这个时候需要输入完整的用户账号和密码,此时取得的bash就叫做 login shell.
on-login shell: 在通过图形界面登录后,我们打开终端此时取得的bash就叫做 no-login shell.
3, 为什么要明确 login shell 和 no-login shell呢?
这是由于这两种情况取得bash的时候,所读取的配置文件不同.
4, login shell取得bash所需要读取的配置文件及其路径
/etc/profile:该配置文件可以根据登陆者UID来决定很多重要的数据, 这也是每个使用者登入bash时候一定会读取配置文件.
该配置文件主要包含了下面的内容:
PATH: 该变量根据当前UID,来决定PATH要不要包含sbin的系统指令目录.
MAIL: 依据UID,设置当前登入的账户 mailbox 到 /var/spool/mail/账户名.
USER: 根据账户设置该变量内容.
HOSTNAME: 依据hostname指令决定该变量的内容.
HISTSIZE: 历史命令记录笔数.
umask: root下默认为022, 一般用户为022.
除了上面这些 /etc/profile 文件本身,还会读取其他配置文件:
/etc/profile.d/*.sh : /etc/profile.d这个目录下的 .sh 文件主要是用来规范bash显示命令的颜色, 以及ls/vi/which等等命令 alias.
/etc/locale.conf:这个文件呢是由 /etc/lang.sh来调用的,用来设置当前环境的字符集(character set). /usr/share/bash-completion/completions/*: 我们使用tab按键补全的时候其实就是该目录下的文件提供的.
上面读取/加载的配置文件都是全局的面向所有的用户的,由于linux是多用户的,因此每个用户也都有自己的喜好.
~/.bash_profile 或者 ~/.bash_login 或者 ~/.profile: 这三个文件只会读取一个假设第一个读取到了就不会再读取第二个,第三个了.
5, 说完了login shell, no-login shell呢? 会读取哪些配置呢?
~/.bashrc:该文件在我们通过 no-login shell取得bash的时候便会获取.
该文件一般用于:
(1), 依据不同的UID,给umask设置不同的值.
(2),依据不同的UID,加载不同的PS1变量的值.