在与Linux打交道的过程中经常会遇到配置shell环境的情况,以往总是莫名遇到各种问题反复查资料,现理清原理思路,总结配置方法,避免再遇到类似情况处理起来低效无绪。
1.shell环境分类
首先从是否交互和是否登录两个方向区分shell环境:
| 是否交互 | 是否登录 | |
|---|---|---|
| 是 | shell等待用户输入,根据输入实时返回运行结果 | 在命令中需要输入用户和密码,或者参数指定login条件 |
| 否 | 以脚本方式执行命令,逐行执行后即退出shell环境 | 无需输入用户和密码就可以进入的shell |
以此可以将shell环境分为四种:
-
交互式登录
eg:
ssh远程连接获取shell
bash --login运行的shell
su -l user输入密码后进入的shell -
非交互式登录
eg:
以脚本文件方式登录的shell -
交互式非登录
eg:
在gnome、kde等桌面环境直接打开shell
su user输入密码后进入的shell -
非交互式非登录
eg:
以脚本文件方式直接执行shell命令
2.shell初始化脚本
shell环境初始化脚本分为profile和bashrc两类,不同的shell环境执行的初始化脚本有所不同,具体如下:
-
交互式登录 / 非交互式登录
1./etc/profile:为系统的所有用户设置环境信息,存在则执行/etc/bashrc 或 /etc/bash.bashrc脚本。
2.~/.profile 或 ~/.bash_profile:配置特定用户的环境信息,存在则执行~/.bashrc 或 ~/bash.bashrc脚本。
profile初始化文件用于配置系统环境,如系统路径PATH、自定义环境变量、alias命令别名等。当用户重新登录后生效,也可以用source或.执行脚本,这样配置会在当前shell环境生效。 -
交互式非登录
1./etc/bashrc 或 /etc/bash.bashrc:为系统所有运行bash shell的用户配置运行环境
2.~/.bashrc:配置专属用户的bash shell运行环境,交互式非登录条件下执行
rc意为run command,即运行一个软件的初始化命令,vimrc即用于配置vim的运行环境,bashrc即用于配置bash shell的运行环境,rc和profile本质上都是脚本文件,设置的内容可以相同,只是应用于不同的交互和登录shell环境。重新打开一个shell即可生效,也可以用source或.执行脚本生效。 -
非交互式非登录
不执行初始化文件,子shell和新建shell默认都不会继承当前父shell的环境变量,父shell中配置的环境变量要想在子shell中生效,变量定义时要用export限定(export只影响子shell的环境信息)。
3.执行命令区分
不同的命令执行环境不同,相应的环境变量、传递参数也不一样,在执行命令时要加以区分。
在当前shell中执行的命令:
source script. scriptbash -c command$(command)- `
command`
开启子shell运行的命令:
./scriptbash script
开启新shell运行的命令:
- 在gnome、kde等桌面环境新打开的shell
本文介绍了Linux中shell环境的四种类型:交互式登录、非交互式登录、交互式非登录和非交互式非登录,并详细讲解了shell初始化脚本profile和bashrc的作用及执行情况。通过理解这些概念,可以更有效地进行shell环境配置,避免配置过程中的常见问题。
2781

被折叠的 条评论
为什么被折叠?



