环境变量与文件查找
1 : 设置变量
可以用declare 命令,比如我们要创建一个tmp的变量
你直接用declare tmp来创建,再通过tmp=allen 来赋值
用echo $变量名字 来读取变量
2 : 环境变量
所谓环境变量,就是比上面那种变量应用范围要大
如Shell 的环境变量作用于自身和它的子进程。在所有的 UNIX 和类 UNIX 系统中,每个进程都有其各自的环境变量设置,且默认情况下,当一个进程被创建时,处理创建过程中明确指定的话,它将继承其父进程的绝大部分环境设置。Shell 程序也作为一个进程运行在操作系统之上,而我们在 Shell中运行的大部分命令都将以 Shell 的子进程的方式运行。
一般,有三种环境变量
- 当前 Shell 进程私有用户自定义变量,如上面我们创建的 temp 变量,只在当前 Shell 中有效。
- Shell 本身内建的变量。
- 从自定义变量导出的环境变量。
而设置环境变量的命令,也有三种 set env export
具体我们可以做一个实验来看下,先设置一个环境变量
设置好temp以后
之后把3种环境变量重定向到3个文件内
可以看到set的领域是最大的
3:命令的查找路径与顺序
我们在shell里面可以直接执行一些命令,那这些命令是储存在哪里的呢?系统如何找到这些命令呢
这是通过环境变量
PATH
来进行搜索的,熟悉 Windows 的用户可能知道 Windows 中的也是有这么一个 PATH 环境变量。这个PATH
里面就保存了Shell中执行的命令的搜索路径。他是以冒号作为分割的,可以看到,这一类的文件夹下面,一般放的都是可执行的文件
系统会按照先后顺序来查找,如果说有2个一样的命令,那么就按照先找到的来执行
那如果我们要添加系统路径,可以通过以下方式操作
$ PATH=$PATH:/home/shiyanlou/mybin
但是这样的方式有一个不好,就是一旦shell关闭,就没了,下次还要重新设置
所以,我们可以把他写入shell的配置文件里面
$ echo "PATH=$PATH:/home/shiyanlou/mybin"
这里要附加一句,除了直接输入source之外,他的缩略写法可以是一个点 .
但是,用点的时候,必须使用绝对路径
后面还有修改变量的方法,用到类似正则表达式的功能
回头再看如何修改
如何快速地删除一个变量呢?如下
接着讲一个很常用的功能,搜索功能,关于搜索功能有4种
whereis
which
find
locate
首先是whereis
第二种是locate,需要注意的是! locate查找的时候,他会进行递归子目录查找
第三种是which,他只从PATH里面设置的路径去搜索
最后一个是find,也是功能最为强大的一个搜索功能