10.2.3 环境变量的功能

简介: 10.2.3 环境变量的功能

用 env 观察环境变量与常见环境变量说明

env 是 environment (环境) 的简写,是列出来所有的环境变量。


HOME 代表使用者的主文件夹。


SHELL 告知我们,目前这个环境使用的 SHELL 是哪支程序? Linux 默认使用 /bin/bash。


HISTSIZE 这个与“历史命令”有关,亦即是, 我们曾经下达过的指令可以被系统记录下来,而记录的“笔数”则是由这个值来设置的。


MAIL 当我们使用 mail 这个指令在收信时,系统会去读取的邮件信箱文件 (mailbox)。


PATH 就是可执行文件搜寻的路径目录与目录中间以冒号(:)分隔, 由于文件的搜寻是依序由 PATH 的变量内的目录来查询,所以,目录的顺序也是重要的。


LANG是语系数据。举例来说,当我们在启动某些 perl 的程序语言文件时,他会主动的去分析语系数据文件, 如果发现有他无法解析的编码语系,可能会产生错误。一般来说,我们中文编码通常是 zh_TW.Big5 或者是zh_TW.UTF-8,这两个编码偏偏不容易被解译出来,所以,有的时候,可能需要修订一下语系数据。


RANDOM是“随机乱数”,目前大多数的 distributions 都会有乱数产生器,那就是 /dev/random 这个文件。 我们可以通过这个乱数文件相关的变量($RANDOM) 来随机取得乱数值。在 BASH 的环境下,这个 RANDOM 变量的内容,介于 0~32767 之间,所以,你只要 echo $RANDOM 时,系统就会主动的随机取出一个介于 0~32767 的数值。


用 set 观察所有变量 (含环境变量与自订变量)


bash 可不只有环境变量,还有一些与 bash 操作接口有关的变量,以及使用者自己定义的变量存在的。

一般来说,不论是否为环境变量,只要跟我们目前这个 shell 的操作接口有关的变量, 通常都会被设置为大写字符,也就是说,“基本上,在 Linux 默认的情况中,使用{大写的字母}来设置的变量一般为系统内定需要的变量”。


PS1:(提示字符的设置)


这是 PS1 (数字的 1 不是英文字母),这个东西就是我们的“命令提示字符”。当我们每次按下 [Enter] 按键去执行某个指令后,最后要再次出现提示字符时, 就会主动去读取这个变量值了。上头 PS1 内显示的是一些特殊符号,这些特殊符号可以显示不同的信息, 每个distributions 的 bash 默认的 PS1 变量内容可能有些许的差异,不要紧,“习惯你自己的习惯”就好了。 你可以用 man bash [3]去查询一下 PS1 的相关说明,以理解下面的一些符号意义。


\d :可显示出“星期 月 日”的日期格式,如:"Mon Feb 2"


\H :完整的主机名称。举例来说,鸟哥的练习机为“study.centos.vbird”


\h :仅取主机名称在第一个小数点之前的名字


\t :显示时间,为 24 小时格式的“HH:MM:SS”


\T :显示时间,为 12 小时格式的“HH:MM:SS”


\A :显示时间,为 24 小时格式的“HH:MM”


\@ :显示时间,为 12 小时格式的“am/pm”样式


\u :目前使用者的帐号名称,如“dmtsai”;


\v :BASH 的版本信息


\w :完整的工作目录名称,由根目录写起的目录名称。但主文件夹会以 ~ 取代;


\W :利用 basename 函数取得工作目录名称,所以仅会列出最后一个目录名。


# :下达的第几个指令。


$ :提示字符,如果是 root 时,提示字符为 # ,否则就是 $


10.2.4 影响显示结果的语系变量 (locale)


当我们使用 man command 的方式去查询某个数据的说明文档时,该说明文档的内容可能会因为我们使用的语系不同而产生乱码。 另外,利用 ls 查询文件的时间时,也可能会有乱码出现在时间的部分。那个问题其实就是语系的问题。


目前大多数的 Linux distributions 已经都是支持日渐流行的万国码了,也都支持大部分的国家语系。 那么我们的 Linux 到底支持了多少的语系呢?这可以由 locale 这个指令来查询到:

正体中文语系至少支持了两种以上的编码,一种是目前还是很常见的 big5 ,另一种则是越来越热门的 utf-8 编码。 那么我们如何修订这些编码呢?其实可以通过下面这些变量的说:

基本上,你可以逐一设置每个与语系有关的变量数据,但事实上,如果其他的语系变量都未设置, 且你有设置 LANG 或者是 LC_ALL 时,则其他的语系变量就会被这两个变量所取代!这也是为什么我们在 Linux 当中,通常说明仅设置 LANG 或 LC_ALL 这两个变量而已,因为他是最主要的设置变量。


在 Linux 主机的终端机接口环境下是无法显示像中文这么复杂的编码文字, 所以就会产生乱码了。也就是如此,我们才会必须要在 tty1 ~ tty6 的环境下, 加装一些中文化接口的软件,才能够看到中文。


整体的默认语系定义在/etc/locate.conf中:


相关文章
|
7月前
|
Prometheus 监控 算法
CMS圣经:CMS垃圾回收器的原理、调优,多标+漏标+浮动垃圾 分析与 研究
本文介绍了CMS(Concurrent Mark-Sweep)垃圾回收器的工作原理、优缺点及常见问题,并通过具体案例分析了其优化策略。重点探讨了CMS的各个阶段,包括标记、并发清理和重标记
CMS圣经:CMS垃圾回收器的原理、调优,多标+漏标+浮动垃圾 分析与 研究
|
8月前
|
缓存 NoSQL 中间件
Redis,分布式缓存演化之路
本文介绍了基于Redis的分布式缓存演化,探讨了分布式锁和缓存一致性问题及其解决方案。首先分析了本地缓存和分布式缓存的区别与优劣,接着深入讲解了分布式远程缓存带来的并发、缓存失效(穿透、雪崩、击穿)等问题及应对策略。文章还详细描述了如何使用Redis实现分布式锁,确保高并发场景下的数据一致性和系统稳定性。最后,通过双写模式和失效模式讨论了缓存一致性问题,并提出了多种解决方案,如引入Canal中间件等。希望这些内容能为读者在设计分布式缓存系统时提供有价值的参考。感谢您的阅读!
292 6
Redis,分布式缓存演化之路
|
监控 安全 测试技术
API 管理的概念是什么?Apifox 为什么值得推荐?
在互联世界中,API如同软件间的“翻译官”,让应用能相互交流、共享数据。随着API数量激增,有效管理变得至关重要。API管理确保API的质量、安全与性能,提升开发效率及用户体验。它覆盖API从设计到废弃的全过程。利用如Apifox这样的工具,可以轻松实现API的设计、测试、文档管理和模拟等。Apifox集多种功能于一体,简化工作流程,提高团队协作效率。在选择API管理工具时,Apifox以全面的功能和友好的使用体验脱颖而出,成为开发者们的优选。随着技术发展,未来API管理将更加智能化和高效。
434 126
API 管理的概念是什么?Apifox 为什么值得推荐?
|
机器学习/深度学习 人工智能 监控
人工智能的伦理挑战与社会责任
【8月更文挑战第11天】在人工智能技术迅速发展的今天,我们面临着前所未有的伦理和社会责任问题。本文将探讨AI技术可能带来的负面影响,包括隐私侵犯、自动化失业、偏见增强以及决策透明度的缺失。同时,我们将讨论如何通过制定合理的政策、加强国际合作、提高公众意识和培养专业人才来应对这些挑战,确保AI技术的健康发展和社会的和谐进步。
382 1
|
10月前
Node安装版本低于工程版本时打包绕过校验
在开发中,若本地Node版本低于项目配置要求,导致打包报错(如图所示),可在不变更本地环境的情况下,通过在执行`npm run build`前输入命令`set NODE_OPTIONS=--openssl-legacy-provider`来绕行此问题,确保构建顺利进行。
610 10
base64 excel类型base64转html在线显示
base64 excel类型base64转html在线显示
151 0
|
人工智能 自然语言处理 机器人
客户在哪儿AI的ToB获客服务和AI外呼机器人的有何不同
客户在哪儿AI的ToB获客服务 VS AI外呼机器人的ToB获客服务。
|
前端开发 JavaScript Java
Spring Boot中使用拦截器
本节主要介绍了 Spring Boot 中拦截器的使用,从拦截器的创建、配置,到拦截器对静态资源的影响,都做了详细的分析。Spring Boot 2.0 之后拦截器的配置支持两种方式,可以根据实际情况选择不同的配置方式。最后结合实际中的使用,举了两个常用的场景,希望读者能够认真消化,掌握拦截器的使用。
|
设计模式 NoSQL Java
网易面试:SpringBoot如何开启虚拟线程?
虚拟线程(Virtual Thread)也称协程或纤程,是一种轻量级的线程实现,与传统的线程以及操作系统级别的线程(也称为平台线程)相比,它的创建开销更小、资源利用率更高,是 Java 并发编程领域的一项重要创新。 > PS:虚拟线程正式发布于 Java 长期支持版(Long Term Suort,LTS)Java 21(也就是 JDK 21)。 虚拟线程是一种在 Java 虚拟机(JVM)层面实现的逻辑线程,不直接和操作系统的物理线程一一对应,因此它可以减少上下文切换所带来的性能开销。 操作系统线程、普通线程(Java 线程)和虚拟线程的关系如下: ![image.png](https:
467 0
网易面试:SpringBoot如何开启虚拟线程?
|
安全 Java 关系型数据库
基于Java的超市进销存管理系统
基于Java的超市进销存管理系统