linux 环境变量详解,linux环境变量实例详解

1.环境变量

简单理解了变量的概念,就很容易理解环境变量了。环境变量的作用域比自定义变量的要大,如 Shell 的环境变量作用于自身和它的子进程。在所有的 UNIX 和类 UNIX 系统中,每个进程都有其各自的环境变量设置,且默认情况下,当一个进程被创建时,除了创建过程中明确指定的话,它将继承其父进程的绝大部分环境设置。Shell 程序也作为一个进程运行在操作系统之上,而我们在 Shell 中运行的大部分命令都将以 Shell 的子进程的方式运行。

通常我们会涉及到的变量类型有三种:

当前 Shell 进程私有用户自定义变量,如上面我们创建的 tmp 变量,只在当前 Shell 中有效。

Shell 本身内建的变量。

从自定义变量导出的环境变量。

也有三个与上述三种环境变量相关的命令:set,env,export。这三个命令很相似,都是用于打印环境变量信息,区别在于涉及的变量范围不同。详见下表:

命令

说明

set

显示当前 Shell 所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。

env

显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。

export

显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。

2.永久生效

但是问题来了,当你关机后,或者关闭当前的 shell 之后,环境变量就没了啊。怎么才能让环境变量永久生效呢?

按变量的生存周期来划分,Linux 变量可分为两类:

1.    永久的:需要修改配置文件,变量永久生效;

2.    临时的:使用 export 命令行声明即可,变量在关闭 shell 时失效。

这里介绍两个重要文件 /etc/bashrc(有的 Linux 没有这个文件)和 /etc/profile ,它们分别存放的是 shell 变量和环境变量。还有要注意区别的是每个用户目录下的一个隐藏文件:

.profile 可以用 ls -a查看

cd /home/shiyanlou

ls -a

这个 .profile 只对当前用户永久生效。而写在 /etc/profile 里面的是对所有用户永久生效,所以如果想要添加一个永久生效的环境变量,只需要打开 /etc/profile,在最后加上你想添加的环境变量就好啦。

3. 命令的查找路径与顺序

你可能很早之前就有疑问,我们在 Shell 中输入一个命令,Shell 是怎么知道去哪找到这个命令然后执行的呢?这是通过环境变量 PATH 来进行搜索的,熟悉 Windows 的用户可能知道 Windows 中的也是有这么一个 PATH 环境变量。这个 PATH 里面就保存了 Shell 中执行的命令的搜索路径。

查看 PATH 环境变量的内容:

$ echo$PATH

默认情况下你会看到如下输出:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

如果你还记得 Linux 目录结构那一节的内容,你就应该知道上面这些目录下放的是哪一类文件了。通常这一类目录下放的都是可执行文件,当我们在 Shell 中执行一个命令时,系统就会按照 PATH 中设定的路径按照顺序依次到目录中去查找,如果存在同名的命令,则执行先找到的那个。

下面我们将练习创建一个最简单的可执行 Shell 脚本和一个使用 C 语言创建的“ helloworld ”程序,如果这两部分内容你之前没有学习过,那么你可以进行一个入门学习:

C 语言入门教程

高级 Bash 脚本编程指南

Linux ShellScripting Tutorial (LSST) v2.0 。

创建一个 Shell 脚本文件:

$ gedit hello_shell.sh

在脚本中添加如下内容,保存并退出(注意不要省掉第一行,这不是注释,论坛有用户反映有语法错误,就是因为没有了第一行):

修改和删除已有变量

变量修改

变量的修改有以下几种方式:

变量设置方式

说明

${变量名#匹配字串}

从头向后开始匹配,删除符合匹配字串的最短数据

${变量名##匹配字串}

从头向后开始匹配,删除符合匹配字串的最长数据

${变量名%匹配字串}

从尾向前开始匹配,删除符合匹配字串的最短数据

${变量名%%匹配字串}

从尾向前开始匹配,删除符合匹配字串的最长数据

${变量名/旧的字串/新的字串}

将符合旧字串的第一个字串替换为新的字串

${变量名//旧的字串/新的字串}

将符合旧字串的全部字串替换为新的字串

比如要修改我们前面添加到 PATH 的环境变量。为了避免操作失误导致命令找不到,我们先将 PATH 赋值给一个新的自定义变量 path:

$ path=$PATH

$ echo$path

$ path=${path%/home/shiyanlou/mybin}

# 或使用通配符,*表示任意多个任意字符

$ path=${path%*/mybin}

变量删除

可以使用 unset 命令删除一个环境变量:

$ unset temp

6. 如何让环境变量立即生效

前面我们在 Shell 中修改了一个配置脚本文件之后(比如 zsh 的配置文件 home 目录下的 .zshrc),每次都要退出终端重新打开甚至重启主机之后其才能生效,很是麻烦,我们可以使用 source 命令来让其立即生效,如:

$ source .zshrc

source 命令还有一个别名就是 .,注意与表示当前路径的那个点区分开,虽然形式不一样,但作用和使用方式一样,上面的命令如果替换成 . 的方式就该是:

$ . ./.zshrc

注意第一个点后面有一个空格,而且后面的文件必须指定完整的绝对或相对路径名,source 则不需要。

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

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

相关文章

亲爱的稻草人

亲爱的稻草人:连绵的山脚下,有一片绿油油的稻田,风儿吹过,吹起层层稻浪,也吹得稻田里的稻草人微微晃动。 稻草人是妍颖的妈妈新做的,看得出妈妈手很巧。你看稻草人的头上扎着一条红艳艳的方巾,…

乌鸦

乌鸦;从前有一位王后,她有一个还在怀里抱着的小女儿。小姑娘总是调皮不老实,妈妈只能顺着她的性子劝她,可是小姑娘就是不听话。后来,妈妈不耐烦了,正好看见一群乌鸦在皇宫四周飞翔,她就打开窗户…

linux时间子系统之,linux时间子系统(四)

2.3 系统调用timekeeper提供一系列的系统调用,使得用户空间可以获取想要的时间。下面简单的介绍一下clock_gettime系统调用SYSCALL_DEFINE2(clock_gettime, const clockid_t, which_clock,struct timespec __user *,tp){struct k_clock *kc clockid_to_kclock(whic…

腾讯视频上传视频如何同步到企鹅号

企鹅号是腾讯的一个非常棒的产品,让一大批自媒体人赚了钱,我们都知道腾讯视频和企鹅号是互通的,腾讯视频中的视频也可以同步到企鹅号中。所以今天播放器家园网小编教大家如何将视频进行同步。 腾讯视频上传视频如何同步到企鹅号   1、我们首…

linux认令牌操作错误,验证令牌操作错误

问题描述我忘了我的Ubuntu密码,因此我启动进入恢复过程并进入root shell提示符,这就是发生了什么事:rootusername-PC:~# passwd usernameEnter new UNIX password:Retype new UNIX password:passwd: Authentication token manipulation error…

怎么将手机QQ浏览器里面的文章分享给QQ好友

qq浏览器是一个大家都会使用到的搜索软件,用户可以使用手机在这里掌握非常便捷的搜索服务,用户可以打开自己的手机在这里搜索自己想要的文章内容,可以将这些内容分享给朋友,让朋友一起来学习文章内容,那么用户在使用这…

风姐姐,对不起

风姐姐,对不起:一棵木棉树,生长在小山岗上。春风一吹,木棉花就开了,红彤彤的花朵缀满枝头,远看像一片彩云,又像一团火焰,吸引了无数崇敬的目光。每天,彩蝶飞到她身边翩翩…

linux bash 历史记录,Linux Bash History 命令历史记录

此处网址,有详细介绍标准状况下, bash命令历史记录的传统修改方式。linux下面文章,介绍了更符合实际须要的处理方法:git1. 在/etc/bashrc文件末尾内添加内容:不一样版本Linux,该文件名不一样,视…

优酷屏幕录制在哪里_手机优酷怎么录制视频

电脑屏录制软件有很多,但是大部分屏幕录制软件一般必须付钱,而且一些手机软件视频录制后的视頻也有图片水印,比较严重危害了视頻欣赏度。优酷视频的录屏功能设计方案精巧,简易好用,对第一次录制视频的人而言应用十分简…

上海电力大学c语言程序设计章测试,上海电力学院c语言报告:实验8 指针.doc

上海电力学院c语言报告:实验8 指针.doc下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。2.下载的文档,不会出现我们的网址水印。3、该文档所得收入(下载内容预览)…

如何删除2345浏览器网络导航主页

2345浏览器是一款非常便捷的服务软件,用户可以在这里体验一下全新的浏览感受,只要使用手机就可以快速体验最便捷的服务,浏览器是一种非常灵活的搜索软件,用户在使用的时候可以自由设置功能,这样用户可以享受自己想要的…

c语言.h文件怎么写,关于C语言中.h文件怎么书写?

其实,头文件的功能就是申明资源,特别是多个C文件的时候,简单地说,就像是库文件。例如:reg51.h头文件,就是单纯的申明资源,系统的其它头文件,还有申明函数的。如果自己编写头文件&…

腾讯视频怎样关闭推送迷你页面

腾讯视频是一款难得的好软件,本文给大家分享“腾讯视频怎样关闭推送迷你页面”,相信大家看完后在使用方面更加得心应手。腾讯视频客户端为您推荐更多精选热门视频,通过多条件筛选快速定位匹配结果,提供多种画质、多种语言切换播放…

python c语言 数据类型转换,Python类型转换,数据类型转换函数大全

虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型转换。比如说,我们想通过使用 print() 函数输出信息“您的身高:”以及浮点类型 heigh…

帮助蚂蚁的小猪

帮助蚂蚁的小猪;小猪有个特别的爱好,那就是收集各种漂亮的树叶。 小猪最喜欢的就是秋天,因为在秋天,小猪可以收集到各种不同美丽的树叶。这一片像星星,这一片弯弯的像月亮,这一片有五个手指,这…

新闻发布系统C语言,资讯 | 助力期末之c语言专场圆满结束!

原标题:资讯 | "助力期末"之c语言专场圆满结束!大一生活如白驹过隙,一转眼便来到了期末,相信很多同学都对c语言期末考很在意,但是又不知道考点在哪里,感觉很多知识点都还不太清楚。确实&#xff…

c语言结构-的优先级,c语言运算符号优先级

/**************************************************************************/01 左结合_()、[]、->、.() 圆括号[] 下标运算符-> 指向结构体成员运算符. 结构体成员运算符/**************************************************************************/02 右结合 ( …

android自动化测试之robotium初探(三),Android自动化测试之Robotium--基础操作.pdf

Android自动化测试第五课Android 自劢化测试乊Robotium——基础操作Karen微信公众号:gloryroadtrainThreadingTest技术支持Q群:一群:339834199二群:311186106Android自动化测试全系列课程 Android系统级白盒测试以及不自劢化测试集成--核心…

PP视频如何播放本地视频文件

今天小编给广大用户分享PP视频如何播放本地视频文件。PP视频手机版是一款装机必备的手机视频播放软件,用户可在线观看PP视频全部免费高清正版视频,海量内容,高清画质,自由点播,配合先进的P2P下载技术,一键高…