bash变量

Bash变量

用户自定义变量

什么是变量

变量设置规则

注意变量名称前是不可以以数字开头的,而且默认类型是字符串型。

linux中空格代表分割,要用单引号或者双引号包含才能正确使用,而单双引号的区别可以详见这篇文章:

http://myh4ck1ife.github.io/2016/04/19/bash%E7%9A%84%E5%9F%BA%E6%9C%AC%E5%8A%9F%E8%83%BD/

这里变量也可以进行叠加。

变量分类

变量定义

name="myh4ck1ife jack"

变量叠加

aa=123
aa="$aa"456
aa=${aa}789

这里的意思是先给aa赋值123,再给aa加上456这里如果echo一下我们看看会怎么样?

当然下面的这种写法是和上面作用是一样的,看个人习惯

变量调用

echo $name

我们习惯用echo调用,当然也可以用程序调用。

变量查看

set 

作用是查看系统所有变量

变量删除

unset name

环境变量

什么是环境变量

设置环境变量

pstree 查询进程数

声明变量

这里我们看到 pstree 有个父shell bash,再向上还有个bash,再向上还有通过远程连接的。当然如果我们这里exit,退出的是pstree上面的bash。

name=myhacklife
export age=18
sex=man

这里我们定义了一个本地变量name,一个全局变量age,一个本地变量sex。那我们要是想把sex这个已经存在的本地变量改成全局变量要怎么做呢?

export sex

即可

查询变量

set的作用是查看所有变量,而env是专门查看环境变量的。

删除变量

unset 变量名

系统常见环境变量

其实这里严格来说,ps1不是环境变量,用env都查不到,它是系统预留的专门操作系统的环境变量的一个子分支,以上两个命令对系统有特殊含义。

path

脚本命令都要加路径才能执行,但是系统命令不加路径就可以执行,但是它毕竟也是可执行文件,不加路径的原因是因为path环境变量的设置,如果找不到,才会提示命令报错。

我们这里创建一个简单的脚本

#!/bin/bash

echo "hello"

我们要想执行,要赋予给它执行权限

chmod 755 hello.sh

我们这里执行可以用绝对路径或者相对路径执行。

我们这里要是把环境变量中写入这个脚本,就可以直接执行,不用用相对路径或绝对路径了。

这里用 hello.sh 执行,而且tab可以自动执行。但是我们不推荐改变系统本身的命令,我们更习惯变量叠加,所以我们把自己脚本位置加入变量中就可以,我们先删除了它。

rm -rf /bin/hello.sh

这里已经不能直接执行了,我们下面进行变量叠加。

PATH="$PATH":/root

我们发现已经能用了。

我们这时候来echo一下path变量

我们发现路径中已经有了,但是这是临时的,如果重启配置就会恢复默认。

ps1

我们这里echo一下

echo $PS1

我们改一下

PS1='[\u0\t \w]\$ '

我们发信已经改好了,这里我们要注意一下最后单引号前有个空格。我们这里可以显示时间和完整路径了。当然其他功能也可以实现。总之这个系统提示符也是可以改的。当然这里也没有写入配置文件,重启或重新登陆会恢复默认配置。