Linux 环境变量与文件查找

“Linux 基础入门(新版)”实验报告

环境变量与文件查找

原文来自自己的实验楼实验报告:链接,由于复制过来,有些markdown语法不太兼容。

  1. declare 声明一个变量,echo 返回变量的值:

    实验楼

  2. 简单理解了变量的概念,就很容易理解环境变量了。环境变量的作用域比自定义变量的要大,如 Shell 的环境变量作用于自身和它的子进程。在所有的 UNIX 和类 UNIX 系统中,每个进程都有其各自的环境变量设置,且默认情况下,当一个进程被创建时,除了创建过程中明确指定的话,它将继承其父进程的绝大部分环境设置。Shell 程序也作为一个进程运行在操作系统之上,而我们在 Shell 中运行的大部分命令都将以 Shell 的子进程的方式运行。

  3. 通常我们会涉及到的变量类型有三种:
    • 当前 Shell 进程私有用户自定义变量,如上面我们创建的 tmp 变量,只在当前 Shell 中有效。
    • Shell 本身内建的变量。
    • 从自定义变量导出的环境变量。
    • 也有三个与上述三种环境变量相关的命令:set,env,export。这三个命令很相似,都是用于打印环境变量信息,区别在于涉及的变量范围不同。
    • 通过export命令将bash下的变量tmp输出为环境变量,然后切换到子进程zsh中去,能够引用tmp这个变量,但export只是暂时的,在退出终端时就会失效。

      实验楼

    • 添加永久的环境变量需要去修改配置文件,一个是当前用户目录下的./profile,一个是/etc/profile;前者设置的环境变量只对目标用户有效,而后者对所有的用户都有效。
    • 使用gedit创建两个文件来执行,gedit hello_shell.shgedit hello_world.c,在窗口下写入一下简单的代码,就可以实现简单的使用,当然对于.sh文件要通过`chmod命令来赋予它可执行的权限,而.c文件就需要通过gcc -o hellp_world hello_world.c来编译产生可执行文件:
    • 实验楼
    • 实验楼
    • 实验楼
  4. 当把前面创建的两个文件放到新建mybin目录下,再返回home目录执行的时候就只能通过完整路径来执行,这里就可以设置环境变量来直接执行:

    • 注意到配置文件中的PATH变量每一个路径以:分隔,所以利用以下命令PATH=$PATH:/home/shiyanlou/mybin自定义添加路径到PATH文件中,这样就可以在任意目录执行那两个文件了,不过这只是暂时的,当你重启终端的时候就会发现又不能使用了,下面介绍将自定义添加路径的命令自动执行的方式来解决后顾之忧。
    • 因为每个用户在启动时,都会加载用户目录下的配置脚本,将刚才那条命令添加到这个配置文件中后,就可以在每次启动shell时自动添加路径到配置文件中: echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc其中>>表示将标准输出以追加的方式重定向到一个文件中,而前面用到的>则是以覆盖的方式重定向到一个文件中,如果没有文件将会新建一个文件,使用这个两个的时候要注意区分。
    • 让设置立即生效可以使用source命令
      $ source .zshrc
      
    • 另外source还有一个别名```.````,它的使用方式如下,注意与之前表示目录的区分开来
      $ . ./.zshrc
      
  5. 搜索文件:

    • 下面简要说一下,whereis只能查找二进制文件,而更为全面的是locate命令。
    • 通过“ /var/lib/mlocate/mlocate.db ”数据库查找,不过这个数据库也不是实时更新的,系统会使用定时任务每天自动执行 updatedb 命令更新一次,所以有时候你刚添加的文件,它可能会找不到,需要手动执行一次 updatedb 命令(在我们的环境中必须先执行一次该命令)。它可以用来查找指定目录下的不同文件类型,如查找 /etc 下所有以 sh 开头的文件:
      $ sudo apt-get install locate
      $ locate /etc/sh
      

      他还会递归子目录进行查找

    • 查找/usr/share/目录下的所有jpg文件:
      $ locate /usr/share/\*.jpg
      
    • 此外,``which命令和find命令,一个小而精,一个精而细。which通常用来查看某个软件有没有安装,find```则是这几个命令中最强大的了。
    • 这条命令表示去 /etc/ 目录下面 ,搜索名字叫做 interfaces 的文件或者目录。这是 find 命令最常见的格式,千万记住 find 的第一个参数是要搜索的地方:
      $ sudo find /etc/ -name interfaces
      
    • 列出 home 目录中,当天(24 小时之内)有改动的文件:
      $ find ~ -mtime 0
      
    • 列出用户家目录下比 Code 文件夹新的文件:
      $ find ~ -newer /home/shiyanlou/Code
      
    • find命令的其他功能还很多,有机会用上会再加深入!
  6. 作业:

    • 找出 /etc/ 目录下的所有以 .list 结尾的文件:
      $ locate /etc/\*.list
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值