#学习笔记 环境变量与文件查找

5.1

一、三种变量类型

  • 当前Shell进程私有的用户自定义变量,只在当前的Shell中有效
  • Shell本身内建的变量
  • 从自定义变量中导出的环境变量

二、三个与变量有关的命令

  • set:显示当前 Shell 所有变量,包括其内建环境变量(与 Shell 外观等相关);用户自定义变量及导出的环境变量。我的理解是:当前的环境变量+自定义变量
  • env: 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。
  • export:显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。

使用export的例子:
$ temp=shiyanlou
$ echo $temp
shiyanlou
$ zsh
$ echo $temp
无输出
$ exit
$ export temp
$ zsh
$ echo $temp
shiyanlou

三、永久生效
export的功能:对当前的shell里,将自定义变量转化成环境变量。关闭后打开就无效了。让变量永久生效,需要修改配置文件。

两个文件:/etc/bashrc(有的 Linux 没有这个文件) 和 /etc/profile ,它们分别存放的是 shell 变量和环境变量。每个用户目录(home/shiyanlou)下还有一个隐藏文件.profile,里面的配置只对当前用户有效。

需要变量永久生效,就打开etc/profile,添加环境变量。

5.2
一、环境变量PATH的用处:搜索shell输出的命令,让命令执行。PATH里面保存了执行命令的搜索路径。

5.3
一、添加路径的例子:

~
先在home/shiyanlou里建立两个可执行文件helloshell.sh(要修改权限 $ chmod 755)、helloworld.c(要使用 $ gcc -o helloworld helloworld.c 生成可执行文件)
~
然后建立目录 $ mkdir mybin
移动两个文件到这个目录 $ mv helloshell.sh helloworld mybin/
然后执行两个文件 $ ./helloshell.sh $./helloworld
会看到结果
~
返回到home/shiyanlou ,再执行两个文件,就找不到目录了。
于是添加PATH路径
$ PATH=$PATH:/home/shiyanlou/mybin
这样就可以在任何地点执行这两个命令了,但是要去掉./

但是这个方法,在退出shell之后再打开就失效了

二、永久生效的方法:
将命令直接添加到脚本配置文件中。
这个文件在home/shiyanlou里
zsh的配置名是.zshrc;bash的配置名是.bashrc
将命令添加到.zshrc中:
$ echo “PATH=$PATH:/home/shiyanlou/mybin” >> .zshrc
注:>>是追加 >是直接覆盖,若没有这个文件名,会新建一个进行覆盖

5.4
修改和删除已有变量

5.5
让环境变量立刻生效
通常,修改了脚本文件以后需要退出中断重新打开,或者是重启,才能生效。
但是使用 source,可以立刻生效
$ cd /home/shiyanlou
$ source .zshrc

5.6
搜索文件
一、whichis (在数据库中找文件,很快)
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
例子:
whichis svn :找出跟svn有关的所有文件
whichis -b svn :找出svn的二进制文件
whichis -m svn :找出svn的路径文件
whichis -s svn :找出svn的源代码文件

学习:https://www.cnblogs.com/peida/archive/2012/11/09/2761928.html

二、locate
locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。
这个数据库也不是实时更新的,系统会使用定时任务每天自动执行 updatedb 命令更新一次,所以有时候你刚添加的文件,它可能会找不到,需要手动执行一次 updatedb 命令。
更新命令:
sudo apt-get update
sudo apt-get install locate
例子
查找pwd的所有相关文件
locate pwd
搜索etc目录下所有以sh开头的文件
locate /etc/sh
搜索etc中以.jpg结尾的文件
loacte /etc/*jpg

命令参数:

-e 将排除在寻找的范围之外。

-1 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。

-f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案 放在资料库中。

-q 安静模式,不会显示任何错误讯息。

-n 至多显示 n个输出。

-r 使用正规运算式 做寻找的条件。

-o 指定资料库存的名称。

-d 指定资料库的路径

-h 显示辅助讯息

-V 显示程式的版本讯息
学习:https://www.cnblogs.com/peida/archive/2012/11/12/2765750.html

三、which 只找path路径内的
which 本身是 Shell 内建的一个命令,我们通常使用 which 来确定是否安装了某个指定的软件,因为它只从 PATH 环境变量指定的路径中去搜索命令。(实验楼)

我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:
which 查看可执行文件的位置。
whereis 查看文件的位置。
locate 配合数据库查看文件位置。
find 实际搜寻硬盘查询文件名称。

which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。 (竹子博客)

例子:
which lsmod

which cd
会找不到,因为cd是bash内自建的命令,在path内找不到
学习:https://www.cnblogs.com/peida/archive/2012/11/08/2759805.html

四、find
重开一篇笔记来记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值