Linux中环境变量与文件查找

一、环境变量

  • 1.变量
    • 变量,准确的说应该是shell变量,所谓变量就是计算机中用于记录一个值(不一定是数值,也可以是字符或字符串)的符号,而这些符号将用于不同的运算处理中。通常变量与值的一一对应的关系,可以通过表达式读取它的值赋值给其他变量,也可以直接指定数值赋值给任意变量。为了便于运算和处理,大部分的编程语言会区分变量的类型,用于分别记录数值、字符或者字符串等数据类型。shell中的变量也是基本如此,有不同的类型(但不用专门指定类型名),可以参与运算,有作用域限定。
      可以使用declare命令创建一个名为temp的变量
      declare temp
      使用=进行赋值操作
      temp = cdl
      读取变量的值,使用echo命令和 符 号 ( 符号( (符号用于表示引用一个变量的值)
      echo $temp
    • 2.环境变量
      环境变量.png
      • 环境变量就是作用域比自定义变量要大,如shell的环境变量作用于自身和它的子进程。在所有的UNIX和类UNIX系统中,每个进程都有其各自的环境变量设置。关于环境变量,可以简单的理解为在当前进程的子进程是否有效,有效则为环境变量,否则不是。
    • 3.命令的查找路径与顺序
      • 在shell中输入一个命令,shell是怎么知道在哪去找到这个命令然后执行的呢?这是通过环境变量PATH来进行搜索的,熟悉windows的用户可能知道Windows中也有一个PATH的环境变量,这个环境变量中就保存了shell中执行的命令的搜索路径。
        查看PATH环境变量的内容:
        echo $PATH
      • 通过这一类目录下放的都是可执行文件,当我们在shell中执行一个命令时,系统就会按照PATH中设定的路径按照顺序依次到目录中去查找,如果存在同名的指令,则执行先找到的那个。
        创建一个shell脚本文件:
        vim hello_shell.sh
        在脚本文件中添加下面的内容:
#! /bin/bash
for((i=0;i<10;i++)); do
  echo "hello shell"
done
exit 0

为文件添加执行权限:
chmod 755 hello_shell.sh
执行脚本:
./hello_shell.sh
创建一个C语言程序:
vim hello_world.c
添加C文件:

#include <stdio.h>
int main(void){
        printf("hello word!\n");
	return 0;
}

使用gcc生成可执行文件:
gcc -o hello_world hello_world.c
gcc生成二进制文件默认具有可执行权限,无需修改。在cdl目录中创建mybin目录,将上述文件移动到其中:
mkdir mybin
mv hello_shell.sh hello_world mybin/
此时,可在mybin目录下运行刚刚创建的程序:
cd mybin
./hello_shell.sh
./hello_world

  • 4.添加自定义路径到"PATH"环境变量
    • 要在其他目录仍然运行创建的程序,需要添加自定义路径到PATH环境变量。PATH里面的路径以:作为分隔符,所以这样添加自定义的路径: PATH=$PATH:/home/cdl/mybin,此时可在其他目录执行创建的程序。cd ~ hello_shell.sh hello_world
    • 然而,上面的设置方法并没有彻底解决问题,因为PATH环境追加了一个路径,它只是在当前shell有效,一旦退出终端,再打开就会发现又失效了。可以每次启动shell时自动执行上面添加自定义路径到PATH的命令来解决这个问题。
    • 在每个用户的home目录中有一个shell每次启动时会默认执行一个配置脚本,以初始化环境,包括添加一些用户自定义环境变量等。zsh的配置文件是.zshrc,相应的Bash的配置脚本为.bashrc。它们在etc下还都有一个或多个全局的配置文件,不过一般只修改用户目录下的配置文件。可以简单的使用下面的指令直接添加内容到.bashrc中:
      echo “PATH=$PATH:/home/cdl/mybin” >> .bashrc
    • 上面的命令中>>表示将标准输出以追加的方式重定向到一个文件中,注意前面用到的>表示是以覆盖的方式重定向到一个文件中,使用的时候一定要注意!在指定文件不存在的情况下,都会创建新的文件。
  • 5.删除已有的变量
    可以使用unset命令删除一个环境变量
    unset tmp
  • 6.如何让环境变量立即生效
    • 在上面我们在shell中修改了一个配置脚本之后(比如bash的配置文件home目录下的.bashrc),每次都要退出终端重新打开甚至重启主机之后其才能生效,很麻烦。可以使用source命令来让其立即生效,如:source .bashrc。source命令还有一个别名就是.,注意这与当前路径的那个点区分开,虽然形式一样,但作用与使用方式不一样,上面的命令如果替换成.的方式就是 . ./.bashrc

二、搜索文件(与搜索文件相关的命令常用的有whereis which find locate)

  • 1.whereis简单快速
    • 这个搜索很快,因为它并没有从硬盘中依次查找,而是直接从数据库中查询。whereis只能搜索二进制文件(-b),man帮助文件(-m)和源代码文件(-s)。如果想要直接获得更全面的搜索结果可以使用locate命令。whereis -m docker 查看docker帮助文件的地址
  • 2.locate快而全
    • 通过"/var/lib/mlocate/mlocate.db"数据库查找,不过这个数据库也不是实时更新的,系统会使用定时任务每天自动执行updatedb命令更新一次,所以有时候添加的文件,它可能会找不到,需要手动执行一次updatedb命令。如果想只统计数目可以加上参数-c,-i参数可以忽略大小写进行查找,whereis的-b -m -s同样可以使用。locate docker 查询和docker有关的文件
  • 3.which小而精
    • which本身是shell内建的一个命令,通常用which来确定是否安装了某个指定的软件,因为它只从PATH环境变量指定的路径中去搜索命令。which docker 查看docker是否安装
  • 4.find精而细
    • find应该是这几个命令中最强大的了,它不但可以通过文件类型,文件名进行查找而且可以根据文件的属性(如文件的时间戳、文件的权限)进行搜索。与时间相关的命令参数:
      与时间有关的find命令.png
      列出home目录中,当天(24小时内)有改动的文件:
      find ~ -mtime 0
      列出用户home目录下比code文件夹新的文件:
      find ~ -newer /home/cdl/code
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux环境变量文件系统是两个关键的概念,它们对于系统运行和用户的交互起着至关重要的作用。 **1. Linux环境变量**: 环境变量Linux系统存储在内存的配置信息,用于设置和传递应用程序运行时的参数或路径。常见的环境变量包括: - PATH: 定义了程序执行的搜索路径,当命令无法在当前目录找到时,会在PATH指定的路径下查找。 - HOME: 存储用户的主目录,许多系统默认会使用这个目录作为默认的工作目录。 - USER/USERNAME: 当前登录用户的用户名。 - LANG/LANGUAGE: 显示和处理文本的语言环境。 **2. Linux文件系统**: 文件系统是操作系统用于组织和存储数据的方式,主要有以下几种: - **EXT(Extended)系列**:如EXT2, EXT3, EXT4,Linux的传统文件系统,支持日志记录和错误恢复。 - **FAT(File Allocation Table)**:适用于老旧的Windows和某些移动设备,不支持大文件和长文件名。 - **HFS+(Hierarchical File System Plus)**:苹果Mac OS的默认文件系统。 - **NTFS(New Technology File System)**:微软Windows系统的常用文件系统,支持长文件名和加密等高级特性。 - **Btrfs(Balanced File System)**:Linux内核支持的现代文件系统,提供更好的数据完整性、空间效率和文件系统操作性能。 **相关问题--:** 1. 如何查看Linux系统的所有环境变量? 2. Linux系统如何设置或修改环境变量? 3. 文件系统,什么是inode,它在文件管理起到什么作用?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值