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