Linux Shell基础 环境变量配置文件

source命令:使环境变量配置文件强制生效

source 命令会强制执行脚本中的全部命令,而忽略脚本文件的权限。该命令主要用于让重新配置的环境变量配置文件强制生效。source 命令格式如下:

[[email protected] ~]# source 配置文件
或
[[email protected] ~]#.配置文件

"."就是 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 就是前面讲过的默认语系配置文件。

3. 由 /etc/profile 文件调用 ~/.bash_profile文件。~/.bash_profile文件主要实现了两个功能:

  1. 调用了 ~/.bashrc 文件。

  2. 在 PATH 变量后面加入了":$HOME/bin"这个目录。也就是说,如果我们在自己的家目录中建立了 bin 目录,然后把自己的脚本放入"~/bin"目录中,就可以直接执行脚本,而不用通过目录执行了。

4. 由 ~/.bash_profile 文件调用 -/.bashrc 文件。在 -/.bashrc 文件中主要实现了两个功能:

  1. 定义默认别名。笔者把自己定义的别名也放入了这个文件。

  2. 调用/etc/bashrc。

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 文件中,我们查看一下这个文件:

[[email protected] /]# 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,加入如下内容:

[[email protected] ~]# 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 文件中的欢迎信息,不论是本地登录,还是远程登录,都可以显示。

自定义快捷键

查看已有快捷键 ,命令如下所示:

[[email protected] /]# stty -a
speed 38400 baud; rows 24; columns 80; line = 0;
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 = 1; time = 0;
-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

修改已有快捷键,命令如下:

[[email protected] ~] # stty 关键字 快捷键
例如:
[root01ocalhost ~]# stty intr ^p
#定义Ctrl +P快提键为强制中止,"^"字符只需手工输入即可
[[email protected] ~】# stty -a
speed 38400 baud; rows 21; columns 104; line = 0;
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 = 1; time = 0;

强制中止的快提键变成了Ctrl+P

原文地址:https://www.cnblogs.com/lizhouwei/p/9998173.html

时间: 2024-10-22 21:10:53

Linux Shell基础 环境变量配置文件的相关文章

Shell基础-环境变量配置文件

source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生效 主要的配置文件: /etc/profile /etc/profile.d/*.sh ~/.bash_profile ~/.bashrc /etc/bashrc 其中/etc/profile /etc/profile.d/*.sh /etc/bashrc 对所有用户都生效 ~/.bash_profile  ~/.bashrc只对当前用户生效 环境变量配置文件调用顺

Shell编程-环境变量配置文件

1.source命令 修改配置文件后,必须注销重新登陆才能生效,使用source命令可以不用重新登陆 source  配置文件 . 配置文件 环境变量配置文件中主要是定义对系统操作环境生效的系统默认环境变量. 系统登入会加载的配置文件,放在/etc下会对: /etc/profile /etc/profile.d/*.sh ~/.bashrc ~/.bash_profile /etc/bashrc 2.环境变量配置文件的功能 正常加载: su切换用户 /etc/profile的作用: USER变量

Linux中的环境变量配置文件

这篇文章是我之前整理,此次上传.因为刚刚接触linux,一直对里面的变量设置是混淆的,所以查资料整理了一下,以便日后查询. Shell 环境依赖于多个文件的设置.用户并不需要每次登录后都对各种环境变量进行手工设置,通过环境设置文件,用户的工作环境的设置可以在登录的时候自动由系统来完成.环境设置文件有两种,一种是系统环境设置文件,另一种是个人环境设置文件. 1)系统中的用户工作环境设置文件 登录环境设置文件:/etc/profile 非登录环境设置文件:/etc/bashrc 2)用户设置的环境设

linux shell “永久环境变量”、“临时环境变量”和&quot;普通变量&quot;之完全解读

这个年代, 大家写点书, 也无非就是为了搞点钱, 基本都是罗列一些知识点, 基本都是写给已经会了的人看的. 真正用心写书的人, 不多. 如果真正用心写书, 且站在读者的角度去写, 那就少之又少了. 关于linux shell环境变量, 我看了四本linux相关书的介绍, 结果, 没有一本书的讲解让我完全满意, 总感觉没有说清楚.所以呢, 我打算自己来写一下,如有不当指出, 请大家指正. 一. 永久环境变量(实际上属于文件, 而不属于shell, 每打开一个shell, 都会加载/导入到shell

【Linux】Shell三类变量的作用域——linux shell “永久环境变量”、“临时环境变量”和&quot;普通变量&quot;之完全解读

2015-05-08 00:15 3896人阅读 评论(10) 收藏 举报 本文章已收录于: 分类: 软件开发进阶(419) 作者同类文章X Unix/Linux杂项(118) 作者同类文章X 版权声明:本文为博主原创文章,未经博主允许不得转载. 这个年代, 大家写点书, 也无非就是为了搞点钱, 基本都是罗列一些知识点, 基本都是写给已经会了的人看的. 真正用心写书的人, 不多. 如果真正用心写书, 且站在读者的角度去写, 那就少之又少了. 关于linux shell环境变量, 我看了四本lin

Linux中的环境变量配置文件及其作用

登录相关的配置文件: /etc/profile 范围:对所有用户生效 作用: a.定义USER变量 b.定义LOGNAME变量 c.定义MAIL变量 d.定义PATH变量 e.定义HOSTNAME变量 f.定义HISTSIZE变量 g.定义umask值 i.调用/etc/profile.d/*.sh文件 /etc/profile.d/*.sh 范围:对所有用户生效 说明:这是一族sh文件,没个都会被调用 例如: /etc/profile.d/lang.sh 作用:调用/etc/sysconfg/

Linux学习(二十二)Shell基础(二)变量、环境变量配置文件

一.变量 变量是一个容器,里面能放不同的值. 要点知识: PATH,HOME,PWD,LOGNAME这些都是变量. 例子: [[email protected] ~]# echo a+b a+b [[email protected] ~]# echo $a+$b 3+4 [[email protected] ~]# echo $a3$bc [[email protected] ~]# echo $a3$b 4 [[email protected] ~]# echo $a"3"$b 33

第9章 Shell基础(4)_Bash的运算符及环境变量配置文件

5. Bash的运算符 5.1 数值运算与运算符 5.1.1 declare 声明变量类型:#declare [+/-] [选项] 变量名 选项 说明 - 给变量设定类型属性 + 取消变量的类型属性 -i 将变量声明为整数型(integer) -x 将变量声明为环境变量 -p 显示变量被声明的类型. (1)数值运算--方法1: #aa=11 #bb=22 #declare –i cc=$aa+$bb //将cc声明为整型 (2)数值运算--方法2,使用expr或let数值运算工具. #dd=$(

Shell基础:shell变量、环境变量配置文件、shell特殊符_cut、sort、wc、uniq

             shell变量 1.命令 env 列出系统预设的全部系统变量(变量都是大写字母) 2.命令 set 可以查看到系统预设的变量,也可以看到用户自定义的变量. 3.自定义变量:  变量名的规则:字母.数字及下划线,首位不能为数字 4.变量值有特殊符号时需要用单引号括起来 (采用双引号会出错) 使用双引号扩起一个变量时,它会进行解释变量的值 5.全局变量 怎么把一个自定义的变量变为全局变量? (1)export 变量名=变量值    export cansheng=hands