《Linux命令行与shell脚本编程大全》 第六章环境变量

很多程序和脚本都通过环境变量来获取系统信息、存储临时数据和配置信息。

6.1 什么是环境变量:

bash shell用一个叫环境变量(environment variable)的特性来存储有关shell会话和工作环境的信息。

这项特性允许在内存中存储数据,以便程序能轻松访问到它们。

在bash shell中,分两类:

全局变量:对于shell会话和所有生成的子shell都是可见的

局部变量:只对创建的它们的shell可见

6.1.1全局环境变量

查看全局变量,  $env    $printenv

查看某个全局变量:$printenv HOME  或者

$echo $PATH   // $后面接变量名。能让变量作为命令行参数

比如:ls  $HOME   相当于 ls  /home/xiaochongyong

6.1.2 局部环境变量

只在定义它们的进程中可见。

可分为:标准的局部变量  和 用户自定义的局部变量

set:显示为某个特定进程设置的所有环境变量(包括全局,标准局部,自定义局部),还会按照字母排序。

6.2 设置自定义变量。大小写敏感的

6.2.1 设置局部自定义变量:尽量用小写

$my_variable=hello

$echo $ my_variable

$my_variable="hello xcy"   // 两个词时这么写,加"" 。=边上还不能有空格

$echo $ my_variable

父shell中写了,子shell不一定能用。反之也是。

6.2.1 设置全局环境变量。

设定全局变量的进程所创建的子进程中,该变量都是可见的。

创建方法:

(1)

$my_variable=hello  // 创建环境变量

$export my_variable  // 导出到全局变量中

(2)export $my_variable=new_hello   // 这样是更改值

子shell无法改到父shell中全局变量的值。只在当前子shell有效。

6.3删除环境变量

$unset my_variable

子shell中删除了,无法反应到父shell中去。

6.4 默认的shell环境变量。

默认情况下,bash shell中会用一些特定的环境变量来定义系统环境。

这些变量在Linux系统上都已经设置好了。

6.5 设置PATH环境变量

PATH:定义了用于进行命令和程序查找的目录。

echo $PATH   目录以冒号隔开。

可以把新的搜索目录添加到现有的PATH环境变量中。比如:

gcc hello.c -o xcy

一般只能 ./xcy   运行

但是加了环境变量之后就可以运行了。

但是切换到别的目录还是不行。除非这么加

对PATH的修改只能持续到退出或重启系统,不能一直持续。

6.6 定位系统环境变量

登入系统启动一个bash shell时,默认情况下bash会在几个文件中查找命令。这种文件叫做启动文件或环境文件。

bash检查的启动文件取决于启动bash shell 的方式。启动方式有三种:

1.登录shell:登录系统时,bash shell会作为登录shell启动。会从5个启动文件里面读取命令。

(1)/etc/profile  (系统默认主启动文件,系统上每个用户登录都会执行这个启动文件)

(2)HOME/.bash_profile  HOME/.bashrc  HOME/.bash_login  HOME/.profile

这4个是针对用户的,提供一个用户专属的启动文件来定义该用户所用到的环境变量。

大多数Linux发行版只用到这四个文件中的一两个。不一定每个用户都有所有文件。

shell、按照下面的顺序运行第一个被找到的文件,余下的被忽略:

HOME/.bash_profile

HOME/.bash_login

HOME/.profile

注意上面没有HOME/.bashrc  。

HOME/.bashrc  这个文件通常通过其他文件运行。

我的电脑里面只有 HOME/.profile

红色部分表示检查HOME目录是不是有一个.bashrc,如果有就会先执行.bashrc里面的命令

2.交互式shell进程

不是系统登录时启动的,比如在终端下直接运行bash。这个就是交互式shell进程。

这种进程不会访问/etc/profile,只会检查HOME下的.bashrc

.bashrc有两个作用:1.查看/etc目录下通用的bashrc文件、2.为用户提供一个定制自己命令别名和私有脚本函数的地方

3.非交互式shell

系统执行shell脚本时用的就是这种shell。

没有命令行提示符。

bash shell提供BASH_ENV环境变量。当启动非交互式shell时,会检查BASH_ENV来查看要执行的启动文件。如果有,shell会执行里面的命令。这通常包含shell脚本变量设置。

我的电脑没有BASH_ENV值。是如何处理的呢?通过继承父shell的导出过的变量。

比如:父shell是登录shell。在/etc/profile  /etc/profile.d/*.sh  HOME/.bashrc  文件中设置并导出了环境变量,用于执行脚本的子shell能继承这些变量。、

父shell未导出的变量是局部变量,子shell无法继承。

6.6.4 环境变量持久化

对于全局环境变量,/etc/profile 在升级之后就会没有。可以在/etc/profile.d 目录下创建一个.sh结尾的文件,把所有新的或修改过的全局变量放在这个文件中

存储个人永久性bash shell的地方是HOME/.bashrc。

比如之前的给命令取别名,如果放在这里就可以永远使用了。

6.7 数组变量。

环境变量可以是数组(从0开始)。比如:

这个用的很少。

时间: 2024-11-06 08:37:45

《Linux命令行与shell脚本编程大全》 第六章环境变量的相关文章

《Linux命令行与shell脚本编程大全》23章24章

第二十三章 使用其他shell bash shell是linux发行版中最广泛使用的shell.但是它并不是唯一的选择,还有其他的shell可以供你选择. 23.1 什么是dash shell 百度百科上说:Dash shell是一个Unix shell,比Bash shell小的多,符合POSIX标准. 下面是书上的: dash shell是作为debian linux发行版的一部分开发的,主要出现在Ubuntu linux发行版中.它是Bourne shell的精简版.所以它并不像bashs

《Linux命令行与shell脚本编程大全》学习笔记(转)

第一部分:Linux命令行<Linux命令行与shell脚本编程大全> 第一章:初识Linux shell<Linux命令行与shell脚本编程大全> 第二章:走进shell<Linux命令行与shell脚本编程大全> 第三章:基本的bash shell命令<Linux命令行与shell脚本编程大全> 第四章:更多的bash shell命令<Linux命令行与shell脚本编程大全> 第五章:使用Linux环境变量<Linux命令行与she

&lt;&lt;linux命令行与shell脚本编程大全&gt;&gt;学习笔记(1)

一章初识linux shell 一.什么是linux 1.linux系统可大致划分为四部分: l Linux内核 l GNU工具组件 l 图形化桌面环境 l 应用软件 在linux系统里,这四部分中的每一部分都扮演着一个特别的角色,但如果将他们分开,每一部分都没太大的作用. 1)探究linux内核 Linux系统的核心是内核,内核控制着计算机系统上的所有硬件和软件,必要时分配硬件,有时需要执行软件. 内核基本负责以下四项主要功能: l 系统内存管理 l 软件程序管理 l 硬件设备管理 l 文件系

【持续更新中】Linux命令行与Shell脚本编程大全(第3版)读书笔记12-20章

<Linux命令行与Shell脚本编程大全(第3版)>读书笔记 第十二章 使用结构化命令 根据条件使脚本跳过某些命令,这样的命令称为结构化命令(structured command).结构化命令允许改变程序执行的顺序. If-then语句: If command Then Commands Fi 如果if后的command执行退出码是0(也就是执行成功了),then后面的语句就会被执行. 也可以写成: If command; then Commands Fi 注意了,if后的command结果

Linux命令行与shell脚本编程大全.第3版(文字版) 超清文字-非扫描版 [免积分、免登录]

此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Linux命令行与shell脚本编程大全.第3版 (大小:约22M) 原文地址:https://www.cnblogs.com/pluse/p/9408724.html

《Linux命令行与Shell脚本编程大全第2版.布卢姆》pdf

下载地址:网盘下载 内容简介  · · · · · · 本书是一本关于Linux 命令行与shell 脚本编程的全面教程.全书分为四部分:第一部分介绍Linuxshell 命令行:第二部分介绍shell 脚本编程基础:第三部分深入探讨shell 脚本编程的高级内容:第四部分介绍如何在现实环境中使用shell 脚本.本书不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料. 本书内容全面,语言简练,示例丰富,适合于linux 系统管理员及Linux 爱好者阅读

《Linux命令行与shell脚本编程大全 第3版》

第一部分 Linux 命令行 第1章  初识Linux she1.1   什么是Linux 21.1.1 深入探究Linux 内核 31.1.2 GNU 工具 61.1.3 Linux 桌面环境 81.2   Linux 发行版 121.2.1 核心Linux 发行版 131.2.2 特定用途的Linux 发行版 131.2.3 Linux LiveCD 141.3   小结 15 第2章  走进shell2.1   进入命令行 162.1.1 控制台终端 172.1.2 图形化终端 172.2

《Linux命令行与shell脚本编程大全》第十七章 创建函数

可以将shell脚本代码放进函数中封装起来,这样就能在脚本中的任何地方多次使用它了. 17.1 基本的脚本函数 函数:是一个脚本代码块,可以为其命名并在代码中任何位置重用. 17.1.1 创建函数 有两种格式:name 是函数名 1) function name {          commands } 2)这种就比较接近c语言风格了 name() {          commands } 17.1.2 使用函数 跟其他shell命令一样,在行中指定函数名就好了. 在函数定义前使用函数,会收

【更新完毕】Linux命令行与Shell脚本编程大全(第3版)读书笔记21-26章

第二十一章 sed进阶 N:将数据流中的下一行加进来创建一个多行组(multiline group)来处理. D:删除多行组中的第一行. P:打印多行组中的第一行. sed '/header/{n ; d}' data.txt 首先匹配有header的行,然后n表示移动到文本的下一行,然后进行删除.然后继续搜索data.txt中包含header的行,继续之前的流程. 加入有个文本的内容如下: [[email protected] ~]# cat data.txt On Tuesday, the