Linux入门指南:Linux环境变量解析

Linux环境变量解析

    • 前言
    • 基本概念和作用
    • 常见的环境变量
    • 设置环境变量
    • Shell脚本和环境变量
    • 环境变量的一些小规则

前言

你是不是经常听说Linux环境变量,但又对它一头雾水?别着急,让我们一起来揭开这个神秘的面纱,探索一番吧!

先来理解一下,环境变量到底是个什么玩意儿?简单来说,它就是一些系统级别的信息,比如命令搜索路径、用户配置等等。在Linux里,环境变量扮演着非常重要的角色,影响着系统的运行和用户的体验。

你可能会问:“有哪些环境变量是我经常会碰到的呢?”别着急,这里给你列举一些。比如,PATH是用来指定可执行文件的搜索路径,HOME代表用户的主目录,USER表示当前登录的用户名,还有一堆类似的东西。今天就来一起学习以下Linux系统中的环境变量。

基本概念和作用

Linux环境变量实际上是系统中非常重要的一部分。你可以把它们看作是系统的配置信息,其中包含了各种关键数据,比如命令搜索路径、用户信息等等。这些信息对系统的运行起着至关重要的作用。

比如PATH环境变量告诉系统在哪里寻找可执行文件,HOME表示用户的主目录,USER则代表当前登录的用户名。这些信息的存在,让系统能够更加灵活和智能地运转,也让用户的体验更加顺畅。

设置和使用这些环境变量其实并不复杂。你可以在命令行中直接设置,也可以把它们放到配置文件中,确保每次系统启动时都能生效。理解这一点对于系统配置和个性化定制非常重要。

需要注意的是,有些环境变量是全局的,对整个系统生效;而有些则只针对每个用户,只在自己的账户下起作用。搞清楚这一点对于系统管理和个人定制都很关键。环境变量在编程开发中也非常重要。你可以利用它们来传递参数给程序,或者在代码中读取系统的配置信息。这样一来,你的程序就能更加灵活地适应不同的运行环境了。

常见的环境变量

我们首先看一下环境变量PATH,这个环境变量定义了系统在哪些目录中查找可执行文件。在命令行中输入一个命令时,系统会按照 PATH 中定义的路径顺序逐个查找,直到找到对应的可执行文件。默认情下,/bin、/usr/bin、/sbin、/usr/sbin 等目录都会包含在 PATH 中。这样设计使得用户可以轻松执行各种命令,而无需输入完整的文件路径。

比如我们可以通过 echo 命令把这个变量的值打印出来,看一下这个变量具体存储的是什么

在这里插入图片描述
我们知道了PATH中存储的是一些路径,那这些路径里面存的是什么文件呢?下面来看一下
在这里插入图片描述
可以看到 /usr/bin 目录里面通常存储着大多数用户可执行的命令。当用户在终端中输入一个命令时,系统会在 /usr/bin 目录中查找对应的可执行文件。这些文件包括了Linux系统自带的一些基本命令,比如lscpmvrm。除了这些系统自带的命令外还有一些安装的软件也可能会将它们的可执行文件存储在这个目录下。

除了PATH外还有两个比较重要的环境变量HOME 和 USER。HOME 变量表示当前用户的主目录,在用户登录时,系统会将用户的工作目录切换到 HOME 目录下。而 USER 变量则是表示当前登录的用户名,通常在脚本和程序中用来获取当前用户的信息。
在这里插入图片描述
当然环境变量不止这些,我们可以通过以下方式来查看环境变量的值:

1. echo:显示某个特定的环境变量的值
2. export:修改已存在的环境变量/设置添加一个新的环境变量
3. env:查看所有的环境变量
4. printenv:打印当前已设置的环境变量以及它们的值
5. unset:清除环境变量
6. set:显示本地定义的shell变量和环境变量

echo 可以用来显示特定环境变量的值,比如你想查看PATH的值,那就可以使用 echo $PATHexport 则用于修改已存在的环境变量或设置添加一个新的环境变量;envprintenv 命令则用于查看当前系统中所有已定义的环境变量及其值;而 unset 则可以清除特定的环境变量;最后,set 命令用于显示本地定义的 shell 变量和环境变量,这些命令共同构成了对Linux环境变量进行管理和操作的工具集。

其实最常用的查看命令一个是 echoexport,如果想要查看某个特定的环境变量的值,那就用 echo 来查看更加方便,如果你想查看全部的环境变量或者当你不知道你想要查找的那个环境变量到底全程叫什么那就可以使用 exportprintenv 来查看。

设置环境变量

设置环境变量是在Linux系统中非常常见的操作,用户可以根据自己的需要通过以下方式设置环境变量:

1、临时设置
这种方式只在当前Shell会话中生效,关闭Shell后会失效。可以使用export命令来设置环境变量,例如:

$ export MY_VARIABLE="my value"

这样就将 MY_VARIABLE 环境变量设置为了 my value ,设置后的结果可以通过 export 命令查看。

2、用户级别设置
这种方式会将环境变量添加到用户的配置文件中,每次登录时都会自动加载。可以使用 ~/.bashrc~/.profile~/.bash_profile 等文件来设置环境变量。例如,在 ~/.bashrc 文件中添加以下代码:

export MY_VARIABLE="my value"

然后保存文件并执行以下命令使其生效:

$ source ~/.bashrc

3、全局设置
这种方式会将环境变量添加到系统的配置文件中,对所有用户生效。可以使用 /etc/profile/etc/environment 等文件来设置环境变量。例如,在 /etc/profile 文件中添加以下代码:

export MY_VARIABLE="my value"

然后保存文件即可。

以上就是比较常用的几种设置环境变量的方式,但是在设置环境变量时还需要注意以下几点:

  • 变量名的命名规则:环境变量的名称应该符合以下规则:只能包含字母、数字和下划线。第一个字符不能是数字。区分大小写。
  • 值的引号:如果环境变量的值包含空格或特殊字符,应该使用引号将其括起来,以避免解析错误。
  • 路径分隔符:在设置路径相关的环境变量时,需要使用正确的路径分隔符。在Linux系统中,路径分隔符通常是冒号(:)。
  • 先后顺序:当设置多个环境变量时,需要注意它们的先后顺序。有些环境变量可能依赖于其他环境变量的值,所以需要确保正确的顺序。一般来说,应该先设置依赖的环境变量,再设置依赖于它们的环境变量。
  • 持久化:如果希望环境变量的设置在每次启动时都生效,需要将其存储在配置文件中,如前面所述。在编辑配置文件时,建议备份原始文件,并仔细检查语法和格式,以避免引发其他问题。
  • 重新加载环境变量:在修改了环境变量的配置文件后,需要重新加载环境变量才能使其生效。可以使用source命令或重启系统来重新加载环境变量。

Shell脚本和环境变量

在Shell中设置和使用环境变量是非常常见的操作,有几种方法可以实现。下面就来详细看一下如何在shell脚本中设置和使用环境变量。

1、临时设置环境变量

在Shell中,可以通过直接赋值来临时设置环境变量。例如,要设置一个名为MY_VAR的环境变量,可以执行以下命令:

$ MY_VAR="Hello, World"

此时,MY_VAR环境变量会在当前Shell会话中生效,但在新的Shell会话中不会存在。

2、使用export命令设置环境变量

要将环境变量设置为全局可用,可以使用export命令。例如,要将 MY_VAR 环境变量设置为全局变量,可以执行以下命令:

$ export MY_VAR="Hello, World"

这样,MY_VAR环境变量将在当前Shell会话以及所有后续的Shell会话中可见。

3、在配置文件中设置环境变量
为了使环境变量在每次启动Shell时都自动生效,可以将其添加到Shell的配置文件(如.bashrc、.bash_profile等)中。这个我们前面已经介绍过了,就不再赘述了。

上面几点都是介绍如何设置环境变量的方法,不通的应用场景可以选择不同的设置环境变量的方法。介绍完如何设置环境变量之后就来看一下如何在shell脚本中使用环境变量吧。

1. 查看环境变量的值

要查看环境变量的值,可以在终端使用echo命令并在变量名前加上$符号。例如:

$ echo $MY_VAR

这将输出MY_VAR环境变量的值。

2. 在Shell脚本中使用环境变量
在Shell脚本中,可以使用$符号来引用环境变量。例如:

#!/bin/bash# 使用环境变量
echo "Value of MY_VAR: $MY_VAR"

可以发现不管是在命令行中使用环境变量还是在shell脚本中使用环境变量,方法都是一样的,我们可以使用$符号加变量名的方式来实现对环境变量的引用和打印。

环境变量的一些小规则

  • 定义变量时,变量名不加美元符号
  • 变量名和等号之间不能有空格
  • 只包含字母、数字和下划线
  • 不能以数字开头
  • 避免使用 Shell 关键字
  • 使用大写字母表示常量
  • 避免使用特殊符号
  • 避免使用空格
👇点击下方公众号卡片获取资料👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/202476.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网络安全技术】IPsec——AH和ESP

一、IPsec通信 主要是两个协议,认证头AH(Authentication Header)和封装安全载荷ESP(Encapsulate Security Payload)。AH提供了认证(integrity,抗否认,抗重放)&#xff0c…

Python中字符串列表的相互转换详解

更多资料获取 📚 个人网站:ipengtao.com 在Python编程中,经常会遇到需要将字符串列表相互转换的情况。这涉及到将逗号分隔的字符串转换为列表,或者将列表中的元素连接成一个字符串。本文将深入讨论这些情景,并提供丰富…

大模型应用设计的10个思考

技术不是万能的,但没有技术却可能是万万不能的,对于大模型可能也是如此。基于大模型的应用设计需要聚焦于所解决的问题,在自然语言处理领域,大模型本身在一定程度上只是将各种NLP任务统一成了sequence 到 sequence 的模型。利用大…

SAP MM 中的业务伙伴确定配置

这篇博客文章将概述 SAP MM 供应商帐户组中的合作伙伴确定是什么以及如何在 S/4 系统中配置它。 本文将指导您完成分步过程,并为您提供有关在供应商主数据中使用合作伙伴确定的完整想法。 合作伙伴角色 供应商在 SAP 中扮演着不同类型的角色,让我们通…

springboot——自动装配

自动装配 Condition: Condition内置方法:boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata),返回值为布尔型 重写matches方法的类:SpringBootCondition等 SpringBootCondition:springboot自带的实现类…

NodeJS安装

前言: 因为java行业不景气,人才严重过剩,像我我这样的人,只能选择往广度走走,开始学Vue3. Vue3现在默认要NodeJs版本16及以上,所以我这里安装了18.18.0的,目前逛网最新稳定版本是20版本的。 1…

表单修改时取消disabled snippet

前言 有时候开发,表单编辑时有些字段不可更改,比如用户管理的用户名,修改时不可编辑。但是有时候就会有这么一种情况,希望他修改时也可编辑。所以就可以在浏览器–控制台里面写一个snippet,修改时运行。 当然&#xf…

【投稿优惠|检索稳定】2023年信息系统和工程与数字化经济国际会议(ICISEDE 2023)

2024年信息系统和工程与数字化经济国际会议(ICISEDE 2024) 2024 International Conference on Information Systems and Engineering and the Digital Economy(ICISEDE 2024) [会议简介] 2024 年信息系统和工程与数字化经济国际会议(ICISEDE 2024)将于 2024 年 1 月 20 日在厦门…

小型洗衣机什么牌子好又便宜?性价比内衣洗衣机推荐

在内衣洗衣机越来越受欢迎的今天,不少朋友都在犹豫要不要买一台内衣洗衣机,专门来清洗一些贴身衣物,这个问题的答案是很有必要的,因为目前市场上的大型洗衣机只是起到了清洁的作用,并不能有效地清除我们的贴身衣服上细…

Java LeetCode篇-深入了解二叉树经典解法(三种方式实现:获取二叉树的最大深度)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 对称二叉树 1.1 判断对称二叉树实现思路 1.2 代码实现:判断对称二叉树 2.0 二叉树的最大深度 2.1 使用递归实现获取二叉树的最大深度思路 2.2 代码实…

etcd 与 Consul 的一致性读对比

本文分享和对比了 etcd 和 Consul 这两个存储的一致性读的实现。 作者:戴岳兵,爱可生研发中心工程师,负责项目的需求开发与维护工作。 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 本…

Python实现FA萤火虫优化算法优化LightGBM回归模型(LGBMRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法(Fire-fly algorithm,FA)由剑桥大学Yang于2009年提出 , …

0基础学java-day14

一、集合 前面我们保存多个数据使用的是数组,那么数组有不足的地方,我们分析一下 1.数组 2 集合 数据类型也可以不一样 3.集合的框架体系 Java 的集合类很多,主要分为两大类,如图 :[背下来] package com.hspedu.c…

UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)

UniApp 运行到浏览器的时候,接口会跨域报错,这里通过两种方式解决,第一:修改Uniapp自带的manifest.json 源码视图并进行配置h5设置。第二:在项目根目录新建vue.config.js并配置代理。 二选一即可。 修改或调整配置文件…

Python 进阶(十四):枚举类型(enum 模块)

大家好,我是水滴~~ 本篇文章主要介绍了Python中的枚举类型,主要内容包括:枚举类型的简介、创建枚举类型、使用枚举类型等。 文章中包含大量的代码示例,能够帮助新手同学快速入门。 《Python入门核心技术》专栏总目录・点这里 文…

Vue 父传子组件传参 defineProps

defineProps 属性:用于接收父组件传递过来的数据。 注意:如果 defineProps 接收的参数名,和已有变量名相同,就会造成命名冲突。 语法格式: // 无限制 const props defineProps([参数名, 参数名]);// 限制数据类型 …

第二十一章总结

一、网络通信: 1.网络程序设计基础:网络程序设计编写的是与其他计算机进行通信的程序。 1.1局域网与互联网:为了实现两台计算机的通信,必须用一个网络线路连接两台计算机 2.网络协议:网络协议规定了计算机之间连接的…

文心一言大模型应用开发入门

本文重点介绍百度智能云平台、文心一言、千帆大模型平台的基本使用与接入流程及其详细步骤。 注册文心一言 请登录文心一言官方网站 https://yiyan.baidu.com/welcome 点击登录;图示如下: 请注册文心一言账号并点击登录,图示如下&#xff1…

游戏:火星孤征 - deliver us mars - 美图秀秀~~

今天水一篇,借着免费周下载了deliver us mars,玩下来截了好多图,就放这里了。 游戏没有难度,剧情也不难理解,美图到处都是,建模细节也是满满,值得一玩。 游戏中的 A.S.E是守卫飞行机器人&…

力扣刷题day2(最长公共前缀,有效括号,删除有序数组中的重复元素)

题目1:14.最长公共前缀 思路和解析: #define _CRT_SECURE_NO_WARNINGS //最长公共前缀 char* longestCommonPrefix(char** strs, int strsSize) {// 如果字符串数组为空,则返回空字符串if (strsSize 0){return "";}// 将第一个…