谈谈对环境变量的认识

这篇文章主要介绍工作中常用到的环境变量,让大家能有一个清晰彻底的认识。

文章内容主要是我个人的观点,如有疑问,欢迎评论区留言。

1、环境变量是什么

环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息

变量:可以随意给其赋值的一个存储单元

环境变量,可以理解为操作系统里设置的一些全局变量,这些全局变量是为了方便操作系统的运行、调度。

2、为什么要设置环境变量

举个常见的例子:windows系统下,假如我们安装了某一款软件,安装结束后,在安装目录会生成一个该软件的.exe文件,双击该文件,我们就能启动软件。但是难道我们每次要运行该软件的时候都要先找到该.exe文件所在的路径,然后双击吗,显然是不可能的,因为安装的软件太多,我们根本不可能记住所有已安装软件的路径,同时如果我们在其他路径下想运行某些软件岂不是完蛋了。

这时候就需要环境变量了。

3、环境变量的作用

通过在环境变量里面加入所有软件的安装路径,当我们想运行某一软件时双击其快捷方式或者在DOS界面输入软件名称,此时,计算机除了在其当前目录下寻找该软件的.exe文件外,还在环境变量中搜索软件的路径,找到,运行。

比如,Path是一个常见的环境变量,它告诉操作系统,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下寻找此程序外,还应到哪些目录下寻找。

用户通过设置环境变量,来更好的运行进程。

4、环境变量的分类

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

  1. 永久的:需要用户修改相关的配置文件,变量永久生效。

  2. 临时的:用户利用export命令,在当前终端下声明环境变量,关闭Shell终端失效。

二、按照作用域来分,Linux环境变量可以分为:

  1. 系统环境变量:系统环境变量对该系统中所有用户都有效。

  2. 用户环境变量:顾名思义,这种类型的环境变量只对特定的用户有效。

5、不同文件的作用

  1. /etc/profile: 为系统的每个用户设置环境信息和启动程序,当用户第一次登录时,该文件被执行,其配置对所有登录的用户都有效。当被修改时,必须重启才会生效。

  2. /etc/environment: 系统的环境变量,/etc/profile是所有用户的环境变量,前者与登录用户无关,后者与登录用户有关,当同一变量在两个文件里有冲突时,以用户环境为准。

  3. /etc/bashrc: 为每个运行 bash shell 的用户执行该文件,当 bash shell 打开时,该文件被执行,其配置对所有使用bash的用户打开的每个bash都有效。当被修改后,不用重启只需要打开一个新的 bash 即可生效。

  4. ~/.bash_profile: 为当前用户设置专属的环境信息和启动程序,当用户登录时该文件执行一次。默认情况下,它用于设置环境变量,并执行当前用户的 .bashrc 文件。理念类似于 /etc/profile,只不过只对当前用户有效,也需要重启才能生效。

  5. ~/.bashrc: 为当前用户设置专属的 bash 信息,当每次打开新的shell时,该文件被执行。理念类似于/etc/bashrc,只不过只对当前用户有效,不需要重启只需要打开新的shell即可生效。

  6. ~/.bash_logout: 为当前用户,每次退出bash shell时执行该文件,可以把一些清理工作的命令放进这个文件。

  1. 以上需要重启才能生效的文件,其实可以通过source xxx 暂时生效

  2. 文件的执行顺序为:当登录Linux时,首先启动/etc/environment和/etc/profile,然后启动当前用户目录下的/.bash_profile,执行此文件时一般会调用/.bashrc文件,而执行/.bashrc时一般会调用/etc/bashrc,最后退出shell时,执行/.bash_logout。简单来说顺序为:

(登录时)/etc/environment –> /etc/profile(以及/etc/profile.d/里的文件) –> ~/.bash_profile –> (打开shell时)~/.bashrc –> /etc/bashrc –> (退出shell时)~/.bash_logout

6、终端的作用

终端的工作:用户通过终端输入命令,终端将命令传入计算机,执行后,并把结果输入到终端上显示。

但是现在计算机硬件一体化程度越来越高,硬件质量也越来越强,输入输出设备完全没必要单独用一个硬件和计算机进行交换信息了,取而代之使用软件终端和计算机进行交互信息。

这就是终端模拟器 (Terminal Emulator),也就是我们现在所讨论的终端。除了它不是硬件,它符合终端的概念和工作流程。

举个例子,下面这些软件都是终端:

GNU/Linux:gnome-terminal、Konsole;

macOS:Terminal.app、iTerm2;

Windows:Win32 控制台、ConEmu 等。

7、shell的作用

我之前很迷惑一个问题是,有终端就够了嘛,输入命令,执行并把结果输出,要shell干什么。

所以需要明确下终端负责的工作。终端的工作范围:接收用户的输入,显示传过来的输出。(此外还提供一些优化用户体验的功能,比如支持文字复制粘贴、软件背景颜色的调整等)

终端的工作其实是很少的哦,简单来说三点:GUI软件界面、接收输入、显示输出。

而shell的核心工作就是操控计算机内核(如新建文件等等),即访问操作系统中的某个具有一定功能、可以处理具体事务的文件(二进制文件 ---- 此类文件经常被称作工具)、或包含一定内容的文件(文本文件)

我们一般讨论shell都是指命令行shell。

shell为什么叫做命令解释器?

不管是GUI shell 还是命令行 Shell,其实都是在解释命令,只不过GUI shell隐藏解释命令细节,用户通过点击鼠标的操作操作内核命令。

8、几种常见的Shell

/bin/bash

/bin/csh

/bin/dash

/bin/ksh

/bin/sh

/bin/tcsh

/bin/zsh

bash:

Bash 是最常见的 shell,Mac 中默认 shell 就是 bash。
[bash官网这篇文章]描述了唤起 bash shell 时加载的不同文件:login shell 加载 ~/.bash_profile ,而non-login shell 加载 ~/.bashrc 。

zsh:

很多人的 mac 中会使用 zsh 而不是 bash,一大半是因为 oh-my-zsh 这个配置集,它兼容 bash,还有自动补全等好用的功能。zsh 的配置文件~/.zshrc

  1. 以上需要重启才能生效的文件,其实可以通过source xxx 暂时生效

  2. 文件的执行顺序为:当登录Linux时,首先启动/etc/environment和/etc/profile,然后启动当前用户目录下的/.bash_profile,执行此文件时一般会调用/.bashrc文件,而执行/.bashrc时一般会调用/etc/bashrc,最后退出shell时,执行/.bash_logout。简单来说顺序为:

mac系统使用zsh修改.bash_profile文件失效问题:

因为终端默认修改为了zsh,使用.bash_profile配置环境变量之后重启终端就会配置失效

解决方案:

在终端输入vim ~/.zshrc

配置环境变量

在最后加上这句:

source ~/.bash_profile

9、常用的几个命令

  1. 使用env查看所有环境变量

env

  1. 使用echo命令查看单个环境变量。例如:

env

  1. 查看所有的shell

cat /etc/shells

  1. 查看当前窗口使用的shell版本

echo $SHELL

  1. 输出当前使用的shell

echo $0

  1. 我们修改系统默认shell为bash

chsh -s /bin/bash

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • Liunx Day15:管道和重定向 管道和重定向:> < >> << Linux: >:覆盖输出 注意文件/t...
    泥人吴阅读 1,353评论 0 8
  • 站在用户登录角度来说,shell的类型 登录式shell①正常通常某终端登录②su - USERNAME③su -...
    智障猿阅读 193评论 0 1
  • Shell 初识 一、程序 1、什么是程序 程序是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。...
    kobe_liu阅读 357评论 0 0
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,362评论 0 5
  • 系统内核: 让运算器、控制器、存储器、输入/输出设备等各种硬件设备各司其职且又能协同运行。对硬件资源的分配、调...
    假正经乄阅读 987评论 0 1