Linux Shell基础 环境变量配置文件
source命令:使环境变量配置文件强制生效
source 命令会强制执行脚本中的全部命令,而忽略脚本文件的权限。该命令主要用于让重新配置的环境变量配置文件强制生效。source 命令格式如下:
[root@localhost ~]# source 配置文件
或
[root@localhost ~]#.配置文件
"."就是 source 命令
环境变量配置文件
在环境变量配置文件中保存了对系统的操作环境生效的系统默认环境变量,比如 PATH、HISTSIZE、PS1、HOSTNAME 等
登录时生效的环境变量配置文件
在 Linux 系统登录时主要生效的环境变量配置文件有以下 5 个:
- /etc/profile。
- /etc/profile.d/*.sh。
- ~/.bash_profile。
- -/.bashrc。
- /etc/bashrc。
这 5 个环境变量配置文件(/etc/profile.d/*.sh 是一系列的配置文件)在用户登录过程中会依次生效。不过需要注意,/etc/profile、/etc/profile_d/*.sh 和 /etc/bashrc 这三个环境变量配置文件会对所有的登录用户生效;而 ~/.bash_profile 和 ~/.bashrc 这两个环境变量配置文件只会对当前用户生效(因为每个用户的家目录中都有这两个文件)。这些环境变量配置文件是依靠如图 1 所示的顺序被调用的。

1. 用户登录过程中先调用 /etc/profile 文件。在这个环境变量配置文件中会定义如下默认环境变量。
- -USER 变量:根据登录的用户给这个变量赋值(就是让 USER 变量的值是当前用户)。
- -LOGNAME 变量:根据 USER 变量的值给这个变量赋值。
- -MAIL 变量:根据登录的用户来定义用户的邮箱为 /var/spool/mail/ 用户名。
- -PATH 变量:根据登录用户的 UID 是否为 0,判断 PATH 变量是否包含 /sbin、/usr/sbin 和 /usr/local/sbin 这三个系统命令目录。
- -HOSTNAME 变量:根据主机名给这个变量赋值。
- -HISTSIZE 变量:定义历史命令的保存条数。
- -umask:定义 umask 默认权限。注意:/etc/profile 文件中的 umask 权限是在"有用户登录过程(输入了用户名和密码)"时才会生效的。
- -调用 /etc/profile.d/*.sh文件,也就是调用 /etc/porfile.d/ 目录下所有以 .sh 结尾的文件。
2. 由 /etc/profile 文件调用 /etc/profile.d/*.sh 文件。该目录中所有以 .sh 结尾的文件都会被 /etc/profile 文件调用,这里最常用的就是 lang.sh 文件,而这个文件又会调用 /etc/sysconfig/i18n 文件。/etc/sysconfig/i18n 就是前面讲过的默认语系配置文件。
5. 由 ~/.bashrc 文件调用 /etc/bashrc 文件。在 /etc/bashrc 文件中主要定义了如下内容。
- PS1 变量:也就是用户的提示符。如果我们想要永久修示符,就要在这个文件中修改。
- umask:定义 umask 默认权限。这个文件中定义的 umask 是针对"没有用户登录过程(不需要输入用户名和密码,比如从一个终端切换到另一个终端,或进入子Shell)"时生效的。如果是"有用户登录过程",则 /etc/profile 文件中的 umask 生效。
- PATH 变量:会给 PATH 变量追加值,当然也是在"没有用户登陆过程"时才调用的。
- 调用 /etc/profile.d/*.sh 文件,这也是在"没有用户登录过程"时才调用的。在"有用户登录过程"时,/etc/profile_d/*.sh 文件已经被 /etc/profile 文件调用过了。
这 5 个环境变量配置文件会被依次调用。如果是我们自己定义的环境变量,则应该放入哪个文件呢?如果你的修改是打算对所有用户生效的,那么可以放入 /etc/profile 环境变量配置文件;如果你的修改只是给自己使用的,那么可以放入 ~/.bash_profile 或 -/.bashrc 环境变量配置文件。
但是如果我们误删除了这些环境变量,比如删除了 /etc/bashrc 或 ~/.bashrc 文件,那么这些文件中的配置就会失效(~/.bashrc 文件会调用 /etc/bashrc 文件),我们的提示符就会变成下面这样:
-bash-4.1#
因为在 /etc/bashrc 文件中会设定 PS1 命令提示符,如果这个文件不存在或没有被调用,那么提示符就会是 Bash 最基本的样子。
注销时生效的环境变量配置文件
在用户退出登录时,只会调用一个环境变量配置文件,就是 ~/.bash_logout。这个文件默认没有写入任何内容,但是如果我们希望在退出登录时执行一些操作,比如清除历史命令、备份某些数据,就可以把命令写入这个文件。
其他的环境变量配置文件
~/bash_history 文件是历史命令保存文件。
登陆信息及修改
在登录本地终端时的欢迎信息保存在 /etc/issue 文件中,我们查看一下这个文件:
[root@localhost /]# cat /etc/issue
\S
Kernel \r on an \m
系统在每次登录时,会依赖这个文件的配置显示欢迎界面。在 /etc/issue 文件中允许使用转义符调用相应信息,其支持的转义符可以通过 man agetty 命令查询,如表 1 所示。
转义符 | 作 用 |
\d | 显示当前系统日期 |
\s | 显示操作系统名称 |
\1 | 显示登录的终端号,这个转义符比较常用 |
\m | 显示硬件体系结构,如i386、i686等 |
\n | 显示主机名 |
\o | 显示域名 |
\r | 显示内核版本 |
\t | 显示当前系统时间 |
\u | 显示当前登录用户的序列号 |
/etc/issue.net
配置 /etc/issue 文件会在本地终端登录时显示欢迎信息,如果远程登录(如 ssh 远程登录,或 Telnet 远程登录)需要显示欢迎信息,则需要配置 /etc/issue.net 文件。使用这个文件时有两点需要注意:
- 在 /etc/issue 文件中支持的转义符在 /etc/issue.net 文件中不能使用。
- ssh 远程登录是否显示 /etc/issue.net 文件中的欢迎信息,是由 ssh 的配置文件决定的。
需要 ssh 远程登录可以査看 /etc/issue.net 文件中的欢迎信息时,要修改 ssh 的配置文件 /etc/ssh/sshd_config,加入如下内容:
[root@localhost ~]# cat /etc/ssh/sshd_config ...省略部分输出...
# no default banner path
#Banner none
Banner /etc/issue.net
…省略部分输出…
这样,在 ssh 远程登录时,也可以显示欢迎信息,只是不能再识别"\d"和"\l"等信息了。
/etc/motd
/etc/motd 文件中也有欢迎信息的,这个文件和 /etc/issue 及 /etc/issue.net 文件的区别是:/etc/issue 及 /etc/issue.net 文件是在用户登录之前显示欢迎信息的;而 /etc/motd 文件是在用户输入用户名和密码,正确登录之后显示欢迎信息的。/etc/motd 文件中的欢迎信息,不论是本地登录,还是远程登录,都可以显示。
自定义快捷键
查看已有快捷键 ,命令如下所示:
[root@localhost /]# stty -a
speed baud; rows ; columns ; line = ;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = ; time = ;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
修改已有快捷键,命令如下:
[root@localhost ~] # stty 关键字 快捷键
例如:
[root01ocalhost ~]# stty intr ^p
#定义Ctrl +P快提键为强制中止,"^"字符只需手工输入即可
[root@localhost ~】# stty -a
speed baud; rows ; columns ; line = ;
intr = ^P; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>;
start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = ; time = ;
强制中止的快提键变成了Ctrl+P
Linux Shell基础 环境变量配置文件的更多相关文章
- Shell基础-环境变量配置文件
Shell基础-环境变量配置文件 source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生效 主要的配置文件: /etc/p ...
- linux笔记:shell基础-环境变量配置文件
source命令(重新读入配置文件,不用重启就直接生效): 环境变量配置文件: linux中的环境变量配置文件(~代表当前用户的家目录): 配置文件读取顺序: /etc/profile 文件的作用:
- Linux Shell基础 环境变量
环境变量 环境变量和用户自定义变量最主要的区别在于,环境变量是全局变量,而用户自定义变量是局部变量.用户自定义变量只在当前的 Shell 中生效,而环境变量会在当前 Shell 和这个 Shell 的 ...
- Shell编程-环境变量配置文件
1.source命令 修改配置文件后,必须注销重新登陆才能生效,使用source命令可以不用重新登陆 source 配置文件 . 配置文件 环境变量配置文件中主要是定义对系统操作环境生效的系统默认环 ...
- 【Linux】Shell三类变量的作用域——linux shell “永久环境变量”、“临时环境变量”和"普通变量"之完全解读
2015-05-08 00:15 3896人阅读 评论(10) 收藏 举报 本文章已收录于: 分类: 软件开发进阶(419) 作者同类文章X Unix/Linux杂项(118) 作者同类文章X ...
- Linux Shell基础 位置参数变量、预定义变量
位置参数变量 在 Linux 的命令行中,当一条命令或脚本执行时,后面可以跟多个参数,我们使用位置参数变量来表示这些参数.其中,$0 代表命令行本身,$1 代表第 1 个参数,$2 代表第 2 个参数 ...
- Linux Shell基础篇——变量
一.Shell中的变量 注:这里所说的Shell是Bash Shell,我姑且统称为Shell. Shell中的变量分为用户自定义变量.环境变量.位置参数变量.预定义变量.在Shell中,变量的默认类 ...
- Linux中的环境变量配置文件及其作用
登录相关的配置文件: /etc/profile 范围:对所有用户生效 作用: a.定义USER变量 b.定义LOGNAME变量 c.定义MAIL变量 d.定义PATH变量 e.定义HOSTNAME变量 ...
- 『忘了再学』Shell基础 — 22、主要的环境变量配置文件说明
目录 1.source命令 2.Linux系统中环境变量配置文件 (1)登录时生效的环境变量配置文件 (2)/etc/profile环境变量配置文件 (3)/etc/profile.d/*.sh环境变 ...
随机推荐
- ROW_NUMBER() OVER (PARTITION BY M ORDER BY N DESC 好用
做查询的时候,发现一个问题,连接之后,有一个表里面有重复的数据.导致另一个表的记录,跟着重复了几遍.用户曾经反馈,评论会多出来几条, 一直没找到原因.只到发现这个问题.才发现了原因.因为一直用sql ...
- 这是一篇markdown测试博客
欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接 ...
- 根据分辨率改变宽度 demo
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- I.MX6 Ethernet MAC (ENET) MAC Address hacking
/********************************************************************* * I.MX6 Ethernet MAC (ENET) M ...
- python django -5 进阶
高级知识点包括: 静态文件处理 中间件 上传图片 Admin站点 分页 使用jquery完成ajax 管理静态文件 项目中的CSS.图片.js都是静态文件 配置静态文件 在settings 文件中定义 ...
- Asp.Net 无刷新文件上传并显示进度条的实现方法及思路
相信通过Asp.Net的服务器控件上传文件在简单不过了,通过AjaxToolkit控件实现上传进度也不是什么难事,为什么还要自己辛辛苦苦来 实现呢?我并不否认”拿来主义“,只是我个人更喜欢凡是求个所以 ...
- ChemDraw 15支持哪些输入格式
当我们想让我们的化学图形应用在试卷编辑.论文撰写.刊物出版等各个方面,这个时候往往都得使用ChemDraw 15.它可以与很多第三方应用灵活.本ChemDraw教程介绍新版ChemDraw Profe ...
- 进程已经被attach debug,如何解除其debug权限?
今天碰到一个问题,详情: 进程A创建了进程B,并且进程A在创建进程B的时候指定了debug权限: 我的进程C启动了一个Hook,然后系统将我的X dll载入到进程B中: 此时,用visual stud ...
- docker搭建lnmp环境(问题,资料,命令)
入门参考 http://www.runoob.com/docker/docker-install-nginx.html 十大常用命令玩转docker 1. #从官网拉取镜像 docker pull & ...
- 使用RestTemplate发送multipart/form-data格式的数据
现有业务场景需要使用RestTemplate发送一个post请求,请求格式为multipart/form-data的,可以使用以下方法: public Object sendRequest(Objec ...