Bash变量

变量

什么是变量?变量的分类?

变量定义

变量命名规则:linux

变量按照存储数据分类shell

字符串型,整型,浮点型,日期型编程

分类安全

用户自定义变量bash

简介工具

变量不能数字开头,等号两端不能有空格,变量中存在空格时须要双引号或单引号括起来(双引号与单引号区别:双引号括起来的字符中若是有特殊字符会起做用,单引号中丧失做用)。spa

变量定义操作系统

变量调用.net

注:echo是输出指令,还有其他的不少指令能够实现这种功能。只要调用变量都须要在其前面加$(定义时不加$,这与PHP不同)。命令行

变量叠加

有时咱们须要修改某一些变量,可是不是改变内容,这时能够用叠加。

操做:

 

变量查看

Set会查询当前shell中运行的全部变量,与前面的调用不同。能够列出系统默认存在的环境变量。

 

注:查看一个不存在的变量会显示空,这会有歧义,由于若是一个变量赋值为空,输出也是这样子。因此用set -u指令能够区分。

变量删除

注:这里不须要加$,删除变量并非删除变量值。

Bash环境变量

简介

 

 

注:在shell中输入bash能够进入子shell,输入exit退出子shell,输入pstree查看。

 

设置环境变量

查看环境变量

注:env只用来查看环境变量。

删除环境变量

父shell定义的变量虽然在子shell中能够查看,可是不能在子shell中删除,必须回到父shell中才能够。

经常使用环境变量

PATH环境变量

注:系统命令好比ls能够不须要输入路径就执行,这就是由于在PATH中有定义的命令路径。

操做:

 

注:第一个是相对路径执行,第二个是绝对路径。

Vi中内容:

若是咱们想设置为环境变量,不须要这么繁琐的输入路径,直接识别指令,有两种方法:

  1. hello.sh复制到PATH的某一路径下,好比bin目录下

注:这样容易混乱,不建议使用。

  1. 利用变量叠加,在PATH以后叠加路径

注:这样只是临时生效,一旦重启就消失。若是想要永久起做用,就须要将其写入对应的文件之中。

PS1环境变量

定义当前操做系统的起始符。

 

注:\u——当前用户,@——没有做用,\h——简写主机名,空格——无心义,\w——当前所在路径的最后一个目录,\$——提示符。

操做:

注:这里#与PS1之间有空格,且后面有单引号,$与’之间有空格。改完以后前面的显示就改变了。

PS2环境变量

注:若是有的指令太长,一行输入不下,须要换行,可使用指令+\的形式,以后会出现>,这个符号就是PS2定义的。

bash语系变量

当前语系查询

注:当前生效的是LANG,实际上此时LC_ALL是空的。

查看系统默认语系

注:这个是系统开机以后默认进入的语系,而LANG是当前的语系,若是当前是中文,默认语系修改为英文,则重启后会显示英文。

Linux中文支持

注:远程工具能够显示中文,而纯正的linux字符界面是英文的。

位置参数变量

举例:

$n

分析:

脚本中内容:

注:这里num=$1,不能是$s1。

结果:

注:$n是向程序传递参数,这样比直接用常量方便,可是咱们必须事先了解它的使用规则(这里必须在后面加上两个参数才能够运行这个脚本),所以不适用第三方用户,只适合编写者本身使用。

易错点:

这里错误缘由在于sum1与后面等号之间多空格,不能留有空格。

$*$@$#

脚本内容:

运行结果:

 

$*$@区别:

注:$*把里面的数字看作一个值,只会循环一次。$@把输入的参数看作独立的,循环屡次。这里必定要注意双引号。

注:这里介绍一下linux中的for循环,其格式为:

注:in以后跟几个数for循环几回,,每次循环把in后面的值赋值给变量i。

输出结果:

脚本内容:

输出结果:

预约义变量

注:命令执行错误返回的数值不是用户决定的,有写具体指令的人肯定返回的非零值。

注:实际上逻辑与、或操做中,后面一条指令是否执行就是经过判断第一条指令返回值肯定的。

$$

$!

好比find指令前台运行不合适,可能会卡在shell上,须要后台运行。后台运行符号为&。

结果:

预约义变量名称和做用都不能够更改。

接受键盘输入

注:位置参数变量只适用于做者使用,其他用户不知道怎么输入,所以这里用到read指令。

举例:

结果:

其他参数:

注:密码不能显示出来,须要使用-s,规定输入时间-p。须要添加换行符前面须要echo -e。

结果:

注:我这里输入的密码其实是给一个变量了,留做其余的输入。

指定接受

 

shell编程环境变量配置文件

环境变量配置文件简介

变量类型

注:环境变量必须写到相应的文件中,不然重启后消失。

Source命令

注:在.与配置文件之间有一个空格。

注:在.后面加一个空格,这里的.就表示source命令了,而不是隐藏文件(.bashrc这里是隐藏文件,./表示当前路径)。

环境变量配置文件介绍

 

举例:

注:其实环境变量也不必定都是开机后生效,也有关机后生效的。第三、4个是在家目录下,而每一个用户都有不一样的家目录,所以这是每一个用户本身独有的。而第一、二、5放在etc下,全部的用户都会用到,对全部用户有效。

 

环境变量配置文件功能

做用的前后顺序

注:正常登陆过程(不是正常启动过程,须要输入用户名和密码),加载顺序是上面的顺序,里面的环境变量都会起做用。不完整的登陆过程(好比超级用户切换到普通用户,不须要输入用户名和密码),以下所示:

注:这里加载完左侧的红线部分之后,再加载右侧的命令行。

/etc/profile

查看:vi /etc/profile,这时login时使用的,也就是须要输入用户名和密码。定义PATH,判断是否是超级用户(这直接决定登录后的所处的文件路径):

 

注:在命令行中直接输入umask,输出一串数字:

注:第一0,定义系统特殊权限,后面3个是若是新建一个文件,其默认权限由这3个定义。

umask原理:

  1. 执行权限是文件的最高权限,这里不容许新建立的文件就具备可执行权限,这样不安全,只能建立读写(即6)的文件。

  2. 目录最高权限能够是777(目录的最高权限就是进入目录)。

  3. 权限不能使用数字换算,必须是字母:也就是将系统规定设置的最高权限减去umask的权限,重叠的权限删除(这就至关于相减的操做)。文件权限设置以下:

注:这里前一个是666,第二个是022(umask值),相减结果为644(即设定的文件权限,咱们能够在profile中更改umask值,这样新建立的文件权限也就跟着改变了)。

对于目录:

语系

注:咱们只须要了解profile.d中的lang便可。

 

注:若是须要修改历史命令条数,修改/etc/profile,别名在~/bashrc,登陆起始符在/etc/bashrc。

常见错误:登陆后起始符错误

注:/etc/bashrc是在最后调用的,若是前面的某一文件消失则不会加载bashrc,这样就会显示系统自带的提示符。

 

其余环境变量配置文件

注销时生效的环境变量配置文件

注:在此时时空的,也就是退出后不执行任何操做,固然咱们能够定义为清空历史命令:

 

注:通常不建议清楚历史,登录后输入history能够查看历史命令。

 

注:默认状况下历史条数为1000条,可否改动大小取决于命令的存储位置,若是在内存中不建议修改太大,若是在硬盘中则能够修改。我当前命令产生的历史会记录在内存中并不会当即存储在.bash_history中。

相关文章
相关标签/搜索