Linux-环境变量

1.引入

不知道大家有没有以前配过环境变量的经历啊,那么这个环境变量到底是个什么东西呢?

  • 环境变量:操作系统中一个具有特定名字的对象,这个对象往往记录一些关键性的信息,用以辅助系统运行
  • 我们常说的PATH路径,就是环境变量的一种,你可以把它看成我们在写代码时的全局变量,声明好这些全局变量,那么我们在任何函数内部都可以调用这些全局变量
  • 比如我在Linux系统中执行cd程序,按理说我得在这个cd程序的可执行文件所在的目录下才能正常的执行这个cd命令,但是无论我在哪个目录下,都可以执行这个命令,这就是因为系统把这个程序的可执行文件都配置了环境变量,当在执行这些程序的时候,你不用指定这个命令的可执行文件在什么位置,系统会自己根据环境变量中记录的地址去查找,这样就不需要在命令的可执行文件所在目录下才去执行该程序了

2.查看环境变量

在Linux系统中env命令就可以查看当前系统中记录的全局变量

语法格式:env

  • 当然env命令也可以搭配管道符,来进行筛选

如上图所示,我们常见的PATH,PWD,HOME等环境变量

3.环境变量-PATH

在PATH环境变量中记录了系统执行任何命令的搜索路径,路径之间用:隔开

  • /usr/local/bin
  • /usr/bin
  • /usr/local/sbin
  • /usr/sbin
  • /home/itheima/.local/bin
  • /home/itheima/bin

当执行任何命令时,都会按照上面这个顺序,从上述路径中搜索要执行的程序的可执行文件

3.1.$符号

在Linux系统中,$符号被用于取"变量"的值,环境变量记录的信息,除了给系统使用,我们自己也可以取出来

语法格式:echo $环境变量

比如:echo $PATH 就可以取出PATH环境变量的内容

  • 当和其他内容混在一起的时候,可以通过{}来标注取的变量是谁
  • echo ${PATH}adfag

4. 设置环境变量

4.1.临时设置

语法:export 变量名=变量值

在上面的例子中,我设置了一个临时环境变量叫做MYNAME,值是itheima,并用$取出来查看了一下
但是这种方式设置的环境变量,只是临时的,当我关掉虚拟机重新连接之后,或者我从当前用户切走之后,这个环境变量就会消失

4.2.永久生效

  • 若是想针对当前用户生效,配置在当前用户的:~/.bashrc文件中
  • 若是想针对所有用户生效,配置在系统的: /etc/profile文件中
  • 以上两种方式,在配置完之后,都得用source 配置文件 这个命令,来进行立即生效
    首先先用当前用户的vi编辑器打开~/.bashrc文件

进入到了这个文件中之后,采用export命令,在文件中配置环境变量

保存退出之后,就算是退出了系统,之后重新登陆也能查看到该变量的信息

对所有用户生效方式也是一样的,只不过得把用户切换成root,并且在指定的文件中配置

5. 自定义环境变量PATH

假如我们现在来自定义一个可执行文件

在root目录下创建一个新的文件夹myenv

在muenv目录下,创建一个mkhaha文件,并进行编辑,让其输出"哈哈哈哈哈"

然后修改下该文件的权限,添加上可执行权限

然后在myenv这个目录下,运行mkhaha文件,可以看到输出了"哈哈哈哈哈"
那么如果我想让其在任何目录下都可以来执行这个文件,那么该怎么配置呢?

  • 我们只需要把这个文件的目录,配置到PATH缓环境变量中就行

用vi编辑器打开上面说的指定的文件夹

然后编辑如上内容

  • 注意,上面的内容表示,我要给原来的PATH追加一个路径/root/myenv,注意是追加,而不是取代,所以格式中要加一个:

如上,已经退到root目录下了,但是直接执行mkhaha文件,仍能执行成功,表示PATH已经配置好了

相关推荐
躺不平的理查德6 小时前
CMAKE备忘录
linux·运维·服务器
9624566 小时前
跨域与私有网络访问限制排查实录
运维·服务器·网络
发量惊人的中年网工6 小时前
SD-WAN如何赋能工业物联网?打造工厂网络远程连接和数据传输新方案
运维·网络·分布式·物联网
面对疾风叭!哈撒给6 小时前
Linux ARM架构的docker和docker-compose离线安装
linux·docker·架构
乐维_lwops7 小时前
乐维社区“专家坐诊”第403期问答
运维·网络·监控系统·答疑·lerwee运维智能体
爱喝水的鱼丶7 小时前
SAP-ABAP:SAP 实战笔记:BAPI_OUTB_DELIVERY_CONFIRM_DEC 详解——外向交货单过账的利器
运维·性能优化·sap·abap·经验交流
阿虎儿7 小时前
Linux 下为局域网 IP(如 192.168.1.100)打造不受浏览器警告的自签名 SSL/TLS 证书
linux·安全·https
国际云,接待7 小时前
AWS RDS 备份与 PITR 恢复演练:从保留期、恢复命令到应用切换验证
运维·云计算·aws·灾难恢复·数据库备份·rds
不在逃避q7 小时前
一步一步学习使用LiveBindings()TListView进阶使用(),打造天气预报程序
服务器·数据库·学习
小王C语言7 小时前
虚拟机开机过程中关机,再次开机没有分配 IP
linux·网络·tcp/ip