环境变量与文件查找

一、变量定义
#定义变量
declare $变量名
#或者直接赋值也自动定义变量,注意变量之前不带"$"
变量名=值
#打印变量的值,"$"代表引用变量的值
echo $变量名
 
在所有的 UNIX 和类 UNIX 系统中,每个进程都有其各自的环境变量设置,且默认情况下,当一个进程被创建时,处理创建过程中明确指定的话,它将继承其父进程的绝大部分环境设置。
通常我们会涉及到的环境变量有三种:
  • 当前 Shell 进程私有用户自定义变量,如上面我们创建的 temp 变量,只在当前 Shell 中有效。
  • Shell 本身内建的变量。
  • 从自定义变量导出的环境变量
命 令 说 明
set 显示当前 Shell 所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。
env 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。
export 显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量
输出环境变量
#将普通变量输出为环境变量,能被子进程继承
export 变量名
 
3.命令的查找路径与顺序
$PATH环境变量设置命令搜索路径
#输出当前命令搜索路径的设置
echo $PATH
#./程序名
表示执行当前目录下的指定程序
$PATH中临时添加自定义路径,用冒号连接路径
PATH=$PATH:/home/shiyanlou/Code
如果永久添加需要修改配置文件
zsh是.zshrc bash是.bashrc
本次修改用户目录下的文件
$ echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc
4.变量修改
变量的修改有以下几种方式:
变量设置方式 说明
${变量名#匹配字串} 从头向后开始匹配,删除符合匹配字串的最短数据
${变量名##匹配字串} 从头向后开始匹配,删除符合匹配字串的最长数据
${变量名%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最短数据
${变量名%%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最长数据
${变量名/旧的字串/新的字串} 将符合旧字串的第一个字串替换为新的字串
${变量名//旧的字串/新的字串} 将符合旧字串的全部字串替换为新的字串
5.变量删除
可以使用unset命令删除一个环境变量:
$ unset temp
6.如何让环境变量立即生效
$ source .zshrc
或者
$ . ./.zshrc
注意第二种方式必须指定完整的绝对或相对路径
 
二、搜索文件
与搜索相关的命令常用的有如下几个whereis,which,find,locate。
  • whereis简单快速
whereis搜索很快,因为它并没有从硬盘中依次查找,而是直接从数据库中查询。whereis只能搜索二进制文件(-b),man帮助文件(-m)和源代码文件(-s)。
  • locate快而全
通过"/var/lib/mlocate/mlocate.db"数据库查找,系统会使用定时任务每天自动执行updatedb命令更新一次该数据库,有时需要手动执行一次updatedb命令将新的文件数据添加进数据库,它可以用来查找指定目录下的不同文件类型,可以递归子目录进行查找,如查找 /etc 下所有以 sh 开头的文件:
$ locate /etc/sh $ locate /home/shiyanlou/Code/\*.txt
经测试好像locate 后面要跟绝对路径,另外""必须用\来转义
-c 是仅统计数目 -i 是不区分大小写
  • which小而精
它只从PATH环境变量指定的路径中去搜索命令
$ which man
  • find精而细      
posted @ 2017-05-16 17:15  不二小姐  阅读(297)  评论(0编辑  收藏  举报