Linux视频学习笔记(十四)--Shell基础(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011099093/article/details/86620462

声明:本系列文章是博主根据 “兄弟连新版Linux视频教程”做的笔记和视频截图,只为学习和教学使用,不适用任何商业用途。

PS:文章基于Linux版本CentOS6.9,如果对Linux感兴趣,建议去看《细说Linux》,沈超老师和李明老师的教学风格我很喜欢:)

10.4 Bash变量

视频10.4.1 用户自定义变量

1.变量概念

 

2.变量设置规则

 

扫描二维码关注公众号,回复: 5101882 查看本文章

3.变量分类

用户自定义变量、环境变量、位置参数变量、预定义变量;

其实位置参数变量 也是 预定义变量 的一种,只是数量众多,才取分出来;

4.本地变量(用户自定义变量)

 

可以通过set命令查看系统中所有变量(包括环境变量、系统变量、用户自定义变量):

 

视频10.4.2 环境变量

1.环境变量概念

 

2.设置环境变量

 

 

用户自定义变量 与 环境变量的区别:作用域不同。

用户自定义变量只在当前shell环境下生效;

环境变量在当前shell及其子shell环境生效,如果将环境变量写入配置文件,环境变量将在所有shell环境中生效。

使用pstree命令确定进程数:

 

可以看到当前是使用sshd远程连接后的bash环境。

 

如果在bash环境下进入sh环境,再使用pstree命令确定进程:

 

发现当前sh环境是bash的子环境。

 

例子:

首先,定义两个环境变量一个自定义变量:

定义一个环境变量age:export age=18

定义一个自定义变量hobby,并声明为环境变量:hobby=“play gamesexport hobby

 

set命令查看当前环境的变量,发现都可以看到:

 

进入bash环境,再查看变量,发现只能看到环境变量了:

 

set命令查看所有变量不同,使用env专门查看环境变量:

 

调用环境变量,同样是$变量名

 

3.系统常见环境变量

 

其实PS1并不是环境变量,使用env命令查不到,只有set命令才能看到,

PS1是系统预留用来定义系统操作环境的变量,是环境变量的子分支

 

系统能够直接执行系统命令,是由于在PATH中定义了命令所在路径,如果想要不是用绝对路径直接执行脚本,可以将脚本所在路径添加到PATH环境变量:

PATH=${PATH}:/tmp/test/shell

但是使用命令追加在环境变量地址在重启后都会消失,所以要写入配置文件才能永久生效:

 

 

执行echo PS1命令:[\u@\h \W]\$

发现命令展示:

[root@localhost ~]#

[用户名@主机地址 当前目录最后一级目录]如果是root就展示#不是root就展示$

 

如果要修改PS1的展示方式,使用PS1=’格式’ ,注意要在各式外加单引号。

视频10.4.3 位置参数变量

1.位置参数变量

 

注意:

        在Linux中要想进行数值运算,必须在数值外加双小括号:

例子:

 

$#代表参数的个数,不包括命令本身;

 

$* 与 $@ 的区别($*会把所有参数会当做一个整体,$@会将所有参数独立对待):

 

视频10.4.4 预定义变量

1.预定义变量

 

&&|| 判断命令是否正确执行时,就是用 $? 来判断上一条命令是否正确执行,是否返回0;

 

Linux系统中,如果要将一个进程放在后台,就必须要加&

 

例子:

 

执行结果:

 

2.接收键盘输入

 

 

执行:

 

10.5 Bash的运算符

 

视频10.5.1 数值运算与运算符

 

1.declare声明变量类型

 

export param其实就是声明变量param为环境变量,等同于declare –x param

 

2.数值运算

 

 

 

3.运算符

优先级从上到下依次递减

 

 

视频10.5.2 变量测试与内容替换

 

 

 

10.6 环境变量配置文件

 

视频10.6.1 环境变量配置文件简介

1.source命令

 

一般更改配置文件后需要重启服务才能生效,但是使用source 命令可以不用重启服务而使配置文件生效,source 配置文件. 配置文件 效果相同。

 

2.环境变量配置文件简介

HISTSIZE:历史命令保存条数;

PS1:提示符;

HOSTNAME:主机名;

 

系统中的环境变量配置文件:

 

注意:

        /etc/路径下的配置文件对每个登录Linux的用户都生效;

        ~/.bash_profile和~/.bashrc是在登录用户家目录下,只对此登录用户生效;

 

视频10.6.2 环境变量与配置文件作用

1.环境变量调用的顺序:

 

2./etc/profile的作用

 

查看/etc/profile文件:

定义USER/LOGNAME/MAIL:

 

定义PATH:

这里定义了环境变量PATH的内容:当EUID=0即root用户登录时,PATH中添加/sbin:/usr/sbin:/usr/local/sbin,否则不添加(使用after表示)

 

定义HOSTNAME(登录名)/HISTSIZE(历史命令保留条数):

 

定义umask:

当uid用户ID大于(-gt)199时umask设为002(777-002=775),而root的uid=0,所以umask就设为022(777-022=755)

 

读取:/etc/profile.d/*.sh文件:

 

其中:etc/profile.d/lang.sh是用于定义系统语言的脚本:

 

可以看到,从/etc/sysconfig/i18n:文件中读取相关内容:

 

 

3.~/.bash_profile的作用

 

可以看到首先在家目录/.bash_profile文件中调用了~/.bashrc文件,然后在环境变量PATH后追加了$HOME/bin路径,然后声明为PATH:

 

然后看~/.bashrc文件:

 

里面有自定义的别名,然后调用了/etc/bashrc文件

 

4./etc/bashrc的作用

查看/etc/bashrc文件:

 

发现貌似与/etc/profile文件定义内容相同,但是查看注释,发现只有在非密码登录状态下才生效,如进入子shell模式:

 

其实,/etc/bashrc文件真正定义的是用户登录提示符

 

 

了解了上述两种调用顺序,只要把想定义的变量或配置放在其中一个配置文件中即可,但是注意:后面调用的配置会覆盖前面的配置,而且/etc/bashrc文件中除了用户登陆提示符,其他配置只有在非密码登录时才生效,~/.bash_profile~/.bashrc只在此登录用户时生效。

 

视频10.6.3 其他配置文件和登录信息

 

 

注意:写错了,应该是~/.bash_history文件

 

3.Shell登录信息

1.本地终端欢迎信息/etc/issue

\l 可以显示当前登录的终端号,本地登录推荐加上:

 

Linux自带的6个本地终端,在不同终端登录时显示的终端号不同(点击ALT+F1~F6切换):

 

注意:

        这个文件的配置只对本地登录生效,远程登录不生效!

 

2.远程终端欢迎信息/etc/issue.net

 

打开/etc/ssh/sshd_config文件,找到#Banner none改为 Banner /etc/issue.net,才可以显示/etc/issue.net中的登录信息:

/etc/issue.net:

 

/etc/ssh/sshd_config:

 

注意:修改完/etc/ssh/sshd_config文件后要重启ssh服务才能生效:

 

此时再用远程登录就可以看到登录信息,但是反斜杠\不再有转义功能:

 

3.登录后欢迎信息/etc/motd:

此欢迎信息不管远程登录还是本地登录都生效:

远程登录:

本地登录:

 

猜你喜欢

转载自blog.csdn.net/u011099093/article/details/86620462