linux登入式与非登入式shell
登入相关配置文件
拿centos7环境举例,bash相关的配置文件主要分为全局配置文件和个人配置文件。
- 全局配置文件
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
- 个人配置文件
~/.bash_profile
~/.bashrc
可以看到,配置文件主要分为profile
类和bashrc类文件
。
profile
类文件主要作用- 设定环境变量。
- 运行命令或脚本(登录时运行的脚本)。
bashrc
类文件主要作用- 设定本地变量。
- 定义命令别名。
登入式shell与非登入式的区别
区别在于,初始化shell时执行的初始化步骤不同,读取配置文件的顺序不同。
- 登入式shell读取配置流程
/etc/profile
->/etc/profile.d/*.sh
->~/.bash_profile
->~/.bashrc
->/etc/bashrc
- 非登入式shell读取配置流程
~/.bashrc
->/etc/bashrc
->/etc/profile.d/*.sh
在profile
类的文件中会设置HOME
,USER
,PATH
,MAIL
等环境变量,所以非登陆shell可能会面临奇怪的命令找不到,环境变量未定义等问题。
登入式与非登入式shell的开启方式
- 登录式shell
- 正常通过某终端登录的shell。
su - username
方式切换用户。su -l username
方式切换用户。
- 非登录式shell
su username
方式切换用户。- 图形终端下打开的命令窗口。
- 自动执行的shell脚本。
所以一般切换用户的时候,建议使用su -
方式而不是su
这种方式。