Linux下的环境变量【详解】

这篇具有很好参考价值的文章主要介绍了Linux下的环境变量【详解】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一,环境变量的概念

1 概述

环境变量一般指的是在操作系统中用于指定操作系统运行环境的一些参数。

  在链接C/C++程序的代码时,会用到动静态库,但是动静态库我们并没有显示的去指定过让系统去那个路径下寻找它,但是每次都可以链接成功,这是因为有了环境变量的帮助。
  环境变量还会有一些特殊的用途,比如可以用作身份验证。

2 环境变量的分类

  • 按照生命周期来分,Linux环境变量可以分为两类:

    1. 永久的:需要用户修改相关的配置文件,变量永久生效
    2. 临时的:用户利用export命令,在当前终端下声明环境变量,关闭Shell终端失效。
  • 按照作用域来分,Linux环境变量可以分为:

    1. 系统环境变量:系统环境变量对该系统中所有用户都有效。
    2. 用户环境变量:顾名思义,这种类型的环境变量只对特定的用户有效。

3 常见的环境变量

  • PATH:决定了 shell 将到哪些目录中寻找命令或程序
  • HOME:当前用户主目录(就是用户登录linux系统中时,默认的目录
  • USER:当前用户的用户名。
  • HISTSIZE:历史记录数
  • LOGNAME:当前用户的登录名
  • HOSTNAME:指主机的名称
  • SHELL:当前用户 Shell 类型,它的通常值是/bin/bash
  • LANGUGE:语言相关的环境变量,多语言可以修改此环境变量
  • MAIL:当前用户的邮件存放目录
  • PS1:基本提示符,对于 root 用户是 #,对于普通用户是 $

Linux 系统中环境变量的名称一般都是大写的,这是一种约定俗成的规范。

4 查看环境变量

4.1 shell变量

  echo的作用是用于字符串的输出.
  运行shell时,会同时存在三种变量:
  1) 局部变量: 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
  2) 环境变量: 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
  3) shell变量: shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

变量在shell中是这样被定义的name = “tanghuan”,定义变量时,变量名不加美元符号$.

变量的命名规则如下:

  • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
  • 中间不能有空格,可以使用下划线 _。
  • 不能使用标点符号。
  • 不能使用bash里的关键字(可用help命令查看保留关键字)。

那后面的字符串的双引号是必须的吗?答案是否定的。
字符串可以用单引号,也可以用双引号,也可以不用引号。

  • 单引号字符串的限制:
    • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
    • 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

${NAME} $后面带上一个花括号可以帮助确定变量范围,是良好的编码习惯。

linux 环境变量,linux,java,运维,c++,c语言,学习方法,服务器

  • 双引号的优点:
    • 双引号里可以有变量
    • 双引号里可以出现转义字符
      linux 环境变量,linux,java,运维,c++,c语言,学习方法,服务器

4.2 查看环境变量

echo $NAME//NAME是环境变量的名称
输入:echo $PATH
会输出这样一串字符:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
他们以 : 作为分隔符,将其分隔成一些子路径,当写入命令时,会自动一个子路径一个子路径的寻找命令自己的源文件,所以就不需要像我们自己写的文件那样,需要主动加上路径(./project),才能被系统所识别运行。

5 添加和删除环境变量

5.1 添加环境变量

  环境变量也是变量,跟shell变量的操作一样,不过PATH=(需要添加的环境变量)这么写可就错了,这样会覆盖掉原来的环境变量,所以得:PATH=$PATH:(需要添加的环境变量).
  需要注意的是,上面那样添加的环境变量在子进程及其后代进程不会产生影响,且只对本次登录有效,具有临时性。要是想对子进程及其后代进程也有效,需要引入export,
  需要这样写:export PATH=$PATH:(需要添加的进程)
  要是不小心像前者那么写并运行了也不用担心,更改的环境变量只限于本次登录,重新登录后。环境变量又会自动恢复成原来的默认路径了。
  原因是前面提到的环境变量的分类可以分为永久性和临时性,在当前终端下声明环境变量,是临时性的。要是想永久性的修改环境变量,需要对配置文件进行操作。

  1. cd ~
  2. vim ./bash_profile
  3. export PATH=$PATH:(需要添加的进程)
  4. 即可永久性的添加环境变量。

5.2 删除环境变量

删除永久性的环境变量需要进入到配置文件中删除相应的命令。

删除临时性的环境变量需要使用到unset (环境变量名称)命令,如unset PATH
linux 环境变量,linux,java,运维,c++,c语言,学习方法,服务器
  此时会清除所有的命令,若是只想清除部分路径,可以使用添加环境变量的方法进行修改
比如:PATH=(需要保留的路径):(需要删除的路径)可以:PATH=$(需要保留的路径).

6. 通过代码如何获取环境变量

6.1 命令行的第三个参数

命令行的第三个参数就是环境变量数组char* env[]

#include <stdio.h>
int main(int argc, char *argv[], char *env[])
{
int i = 0;
for(; env[i]; i++){
printf("%s\n", env[i]);
}
return 0;
}

linux 环境变量,linux,java,运维,c++,c语言,学习方法,服务器

6.2 通过第三方变量environ获取

#include <stdio.h>
int main(int argc, char *argv[])
{
extern char **environ;
int i = 0;
for(; environ[i]; i++){
printf("%s\n", environ[i]);
}
return 0;
}

·linux 环境变量,linux,java,运维,c++,c语言,学习方法,服务器

6.3 通过getenv获取

linux 环境变量,linux,java,运维,c++,c语言,学习方法,服务器

#include <stdlib.h>
int main()
{
	char* p = getenv("PATH");
	printf("%s\n",p);
	return 0;
}

linux 环境变量,linux,java,运维,c++,c语言,学习方法,服务器

7. 环境变量的全局性

  环境变量通常具有全局属性,可以被子进程继承下去。

  因为创建子进程时,是以父进程为模板或者父进程创建的,进程的环境变量信息可以通过子进程及其后代进程继承。

#include <stdio.h>
#include <stdlib.h>
int main()
{
	printf("初始PATH的值:%s\n", getenv("PATH"));
	putenv("PATH=/usr/local/sbin");
    printf("修改后PATH的值:%s\n", getenv("PATH"));
    int flag = fork();
    if(flag == 0)
    {
    	 //子进程
    	printf("子进程的PATH:%s\n", getenv("PATH"));                                                                                          
 
    }
    return 0;
}

运行结果为:
linux 环境变量,linux,java,运维,c++,c语言,学习方法,服务器


    😄 创作不易,你的点赞和关注都是对我莫大的鼓励,再次感谢您的观看😄文章来源地址https://www.toymoban.com/news/detail-762562.html

到了这里,关于Linux下的环境变量【详解】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux】详解六种配置Linux环境变量的方法(以centos为例)

    本文时间 2023-05-19 作者:sugerqube漆瓷 本文重理解,!!忽略环境变量加载原理!! 本文目标 :理解六大环境变量配置,选择合适的配置文件进行配置 以 shell 编程为例 现在我们想要运行名为 \\\"sugerqube.sh\\\" 的脚本需要运行的命令是 ./sugerqube.sh 即在命令行输入脚本的地址 注:

    2024年02月05日
    浏览(35)
  • Linux Java环境变量设置教程

    目前Windows 10系统已经很成熟,大多数人开发都在Windows 10系统下进行开发,于是乎我做一下Java环境变量在Windows 10配下的配置: 具体操作如下: JDK下载地址(选择合适JDK版本下): JDK10.0.1 Java Downloads | Oracle jdk-9+181_windows-x64_ri Java Platform, Standard Edition 9 ReferenceImplementations JDK 

    2024年02月09日
    浏览(42)
  • Linux下三种配置java环境变量的方法

    linux配置java环境变量 如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。 ·用文本编辑器打开/etc/profile ·在profile文件末尾加入: export JAVA_HOME=/usr/local/java export PATH=$JAVA_HOME/bin: $PATH export CLASS

    2024年02月13日
    浏览(34)
  • 一文解决Linux系统下安装并配置Java环境变量

    jdk下载地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载完成后,将需要安装的jdk安装包放到Linux系统指定的文件夹下,并且命令进入该文件夹下 在最后添加

    2024年02月07日
    浏览(38)
  • 2.【Linux】(进程的状态||深入理解fork||底层剖析||task_struct||进程优先级||并行和并发||详解环境变量)

    Linux把所有进程通过双向链表的方式连接起来组成任务队列,操作系统和cpu通过选择一个task_struct执行其代码来调度进程。 1.运行态:pcb结构体在运行或在运行队列中排队。 2.阻塞态:等待非cpu资源就绪(硬盘,网卡等资源) 3.挂起态:一个进程对应的代码和数据被操作系统因

    2024年01月22日
    浏览(43)
  • 【Linux】Linux环境变量的理解 --- 命令行参数、shell子进程、环境变量、本地变量…

    加油布鲁斯,你能行的! 1. 我们平常所用的Linux指令其实也是可执行程序,和我们自己写的二进制程序没什么两样,那么为什么在执行自己的程序的时候需要加上./,而执行这些系统提供的指令(可执行程序),不需要加上./呢? 2. 要执行一个程序或者指令,必须先找到这个

    2024年01月16日
    浏览(51)
  • 【Linux初阶】环境变量 | 如何设置、获取环境变量?

     🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【Linux初阶】 ✒️✒️本篇内容:讨论为什么指令作为一个可执行程序不需要加 ./运行;环境变量为什么会自己恢复;环境变量基本概念;常见环境变量;查看、设置、清除环境变量的方法;环境变量命令汇总;进程中

    2024年02月05日
    浏览(52)
  • 【Linux】环境变量--PATH环境变量/环境变量的操作/命令行参数

    这里我们先提出一个问题: 为什么我们运行自己写的程序需要带路径,而系统的指令不需要带路径? 这是因为系统能找到它的位置,系统中是存在相关的环境变量,保存了程序的搜索路径的,系统中搜索可执行程序的环境变量叫做PATH。所以我们只需要把我们的程序拷贝到

    2024年02月04日
    浏览(60)
  • Linux系统下的pytorch环境配置

    安装conda的方法请参考博主的另一篇文章,里面详细的讲解了安装的方法。文章地址如下: 在Linux系统配置yolov5环境(tensorflow-gpu、cuda、cudnn)_安瑜丶的博客-CSDN博客 1.创建虚拟环境 conda create –n pytorch python=3.8 2.进入虚拟环境,安装pytorch conda activate pytorch conda install pytorch==

    2024年02月15日
    浏览(36)
  • Linux环境下的VScode使用教程

    (1)对于学习本文需要先有自行安装好VMware,对VMware有简单的了解。 (2)对于绝大多数使用Linux的人而言,经常在Windows环境下使用source insight进行编译程序,然后利用FileZilla将Windows的文件的文件上传到Ubuntu,或者是使用Samba将Windows与Ubuntu共享一个文件夹。 (3)以上操作都

    2024年02月09日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包