在Linux中,环境变量是一个很重要的概念。环境变量可以由系统、用户、Shell以及其他程序来设定。

变量就是一个可以被赋值的字符串,赋值范围包括数字、文本、文件名、设备以及其他类型的数据。

下面的例子,我们将为变量 TEST 赋值,然后使用 echo 命令输出:

$TEST="Linux Programming"
$echo $TEST
Linux Programming

注意:变量赋值时前面不能加 $ 符号,变量输出时必须要加 $ 前缀。退出 Shell 时,变量将消失。

登录系统后,Shell会有一个初始化的过程,用来设置环境变量。这个阶段,Shell会读取 /etc/profile 和 .profile 两个文件,过程如下:

  • Shell首先检查 /etc/profile 文件是否存在,如果存在,就读取内容,否则就跳过,但是不会报错。
  • 然后检查你的主目录(登录目录)中是否存在 .profile 文件,如果存在,就读取内容,否则就跳过,也不会报错。

读取完上面两个文件,Shell就会出现 $ 命令提示符:

$

出现这个提示符,就可以输入命令并调用相应的程序了。

注意:上面是Bourne Shell的初始化过程,bash 和 ksh 在初始化过程中还会检查其他文件。

.profile文件

/etc/profile文件包含了通用的Shell初始化信息,由Linux管理员维护,一般用户无权修改。

但是你可以修改主目录下的 .profile 文件,增加一些“私人定制”初始化信息,包括:

  • 设置默认终端类型和外观样式;
  • 设置 Shell 命令查找路径,即PATH变量;
  • 设置命令提示符。

找到主目录下的 .profile 文件,使用 vi 编辑器打开并查看内容。

设置终端类型

一般情况下,我们使用的终端是由 login 或 getty 程序设置的,可能会不符合我们的习惯。

对于没有使用过的终端,可能会比较生疏,不习惯命令的输出样式,交互起来略显吃力。所以,一般用户会将终端设置成下面的类型:

$TERM=vt100
$

vt100 是 virtual terminate 100 的缩写。虚拟终端是一种假的终端,真正有自己的显示器和键盘的终端,会通过特殊电缆(如串口)连到计算机主机。vt100 是被绝大多数Linux系统所支持的一种虚拟终端规范,常用的还有ansi、xterm等。

设置PATH变量

在命令提示符下输入一个命令时,Shell 会根据 PATH 变量来查找该命令对应的程序,PATH变量指明了这些程序所在的路径。

一般情况下PATH变量的设置如下:

$PATH=/bin:/usr/bin
$

多个路径使用冒号(:)分隔。如果用户输入的命令在PATH设置的路径下没有找到,就会报错,例如:

$hello
hello: not found
$

PS1和PS2变量

PS1变量用来保存命令提示符,可以随意修改,如果你不习惯使用 $ 作为提示符,也可以改成其他字符。PS1变量被修改后,提示符会立即改变。

例如,把命令提示符设置成'=>':

$PS1='=>'
=>
=>
=>

也可以将提示信息设置成当前目录,例如:

=>PS1="[\u@\h \w]\$"
[root@ip-72-167-112-17 /var/www/tutorialspoint/Linux]$
[root@ip-72-167-112-17 /var/www/tutorialspoint/Linux]$

命令提示信息包含了用户名、主机名和当前目录。

下表中的转义字符可以被用作PS1的参数,丰富命令提示符信息。

转义字符 描述
\t 当前时间,格式为 HH:MM:SS
\d 当前日期,格式为Weekday Month Date
\n 换行
\W 当前所在目录
\w 当前所在目录的完整路径
\u 用户名
\h 主机名(IP地址)
# 输入的命令的个数,每输入一个新的命令就会加1
\$ 如果是超级用户 root,提示符为#,否则为$。

你可以在每次登录的时候修改提示符,也可以在 .profile 文件中增加 PS1 变量,这样每次登录时会自动修改提示符。

如果用户输入的命令不完整,Shell还会使用第二提示符来等待用户完成命令的输入。默认的第二命令提示符是 >,保存在 PS2 变量,可以随意修改。

下面的例子使用默认的第二命令提示符:

$ echo "this is a
> test"
this is a
test
$

下面的例子通过PS2变量改变提示符:

$ PS2="secondary prompt->"
$ echo "this is a
secondary prompt->test"
this is a
test
$

常用环境变量

下表列出了部分重要的环境变量,这些变量可以通过上面提到的方式修改。

变量 描述
DISPLAY 用来设置将图形显示到何处。
HOME 当前用户的主目录。
IFS 内部域分隔符。
LANG LANG可以让系统支持多语言。例如,将LANG设为pt_BR,则可以支持(巴西)葡萄牙语。
PATH 指定Shell命令的路径。
PWD 当前所在目录,即 cd 到的目录。
RANDOM 生成一个介于 0 和 32767 之间的随机数。
TERM 设置终端类型。
TZ 时区。可以是AST(大西洋标准时间)或GMT(格林尼治标准时间)等。
UID 以数字形式表示的当前用户ID,shell启动时会被初始化。

下面的例子中使用了部分环境变量:

$ echo $HOME
/root
]$ echo $DISPLAY $ echo $TERM
xterm
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin
$

Linux环境变量具体内容介绍的更多相关文章

  1. 什么是环境变量,Linux环境变量及作用 echo

    什么是环境变量,Linux环境变量及作用 < Linux命令的执行过程是怎样的?(新手必读)Linux PATH环境变量是什么,有什么用?(入门必读) > <Linux就该这么学&g ...

  2. Linux环境变量

    本文地址:http://www.cnblogs.com/archimedes/p/linux-envionment-variables.html,转载请注明源地址. 1.什么是环境变量 bash sh ...

  3. linux环境变量LD_LIBRARY_PATH

    LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的两个环境变量,二者的含义和作用分别如下: LIBRARY_PATH环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径 ...

  4. linux 环境变量的设置【转】

    现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量,下面以java环境变量为例介绍三种配置环境变量的方法. 1.修改/etc/profile文件 如果你的计算机仅仅作为开 ...

  5. Linux环境变量配置全攻略

    Linux环境变量配置 在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法. 下面所有例子的环境说明如下: 系统:Ubuntu 14.0 用户名:uusama 需要配置M ...

  6. 转:Linux环境变量设置方法总结 PATH、LD_LIBRARY_PATH

    转:  https://www.linuxidc.com/Linux/2017-03/142338.htm 文章写比较全  转载记录 Linux环境变量设置方法总结 PATH.LD_LIBRARY_P ...

  7. Linux 环境变量加强

    Linux 环境变量加强 # 前言 今天,主要是之前搭建 GO 环境包的使用发现自己对 Linux 环境变量还不是很熟悉. 遇到环境变量的问题还是会有些懵逼.所以,今天写点Linux 环境变量的文章, ...

  8. Linux环境变量及其设置

    简介 环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或多个应用程序将使用到的信息.Linux是一个多用户的操作系统,每个用户登录系统时都会有一个专用的运行环境,通常情况下每个用户的默认的环 ...

  9. [转帖]Linux环境变量设置方法总结 PATH、LD_LIBRARY_PATH

    Linux环境变量设置方法总结 PATH.LD_LIBRARY_PATH 2018年01月17日 21:10:26 晨至曦 阅读数 7548 https://blog.csdn.net/qq_1900 ...

随机推荐

  1. 利用final定义方法:这样的方法为一个不可覆盖的方法。

      常量(这里的常量指的是实例常量:即成员变量)赋值: ①在初始化的时候通过显式声明赋值.Final int x=3: ②在构造的时候赋值. 局部变量可以随时赋值.   利用final定义方法:这样的 ...

  2. IntelJ idea下lombok 不生效的问题(@Builder等注解不生效的问题)解决,lombok Plugin插件安装

    插件安装方式,在设置setting 中找到plugins.在检索框中检索lom,没有的话点击红框内的search in repositories. 点击install进行安装. 记得安装好了重启ide ...

  3. js 原型链和继承(转)

    在理解继承之前,需要知道 js 的三个东西: 什么是 JS 原型链 this 的值到底是什么 JS 的 new 到底是干什么的 1. 什么是 JS 原型链? 我们知道 JS 有对象,比如 var ob ...

  4. BarTender 2016如何导出模板为pdf文件?

    最近有小伙伴来问,BarTender 2016能不能导出模板为pdf文件?这个是可以的,之前针对BarTender 10.1就介绍过一种方法了.本文,小编再针对BarTender 2016给大家讲下如 ...

  5. 公开的免费WebService接口分享

    天气预报Web服务,数据来源于中国气象局 Endpoint  Disco  WSDL IP地址来源搜索 WEB 服务(是目前最完整的IP地址数据) Endpoint  Disco  WSDL 随机英文 ...

  6. ArcGIS删除数据异常崩溃

    环境 ArcGIS Desktop10.1,ArcSDE10.1,Oracle 11.2.0.4客户端和服务器端(服务器端搭建RAC集群) 问题描述 在使用ArcCatalog连接数据库进行数据删除时 ...

  7. Qt编写自定义控件8-动画按钮组控件

    前言 动画按钮组控件可以用来当做各种漂亮的导航条用,既可以设置成顶部底部+左侧右侧,还自带精美的滑动效果,还可以设置悬停滑动等各种颜色,原创作者雨田哥(QQ:3246214072),驰骋Qt控件界多年 ...

  8. SpringBoot入坑-请求参数传递

    前一篇我们探讨了关于springboot的配置文件和Controller的使用,本篇我们来一起探讨一下关于springboot如何传递参数的知识. 参数传递我们最常见的就是在url后通过?/& ...

  9. gitlab-ci + k8s 之docker (三)

    docker 在本系列(一)中(https://www.cnblogs.com/huandada/p/9965771.html)的runner_tomcat.sh脚本有涉及到镜像的推送,本文主要记录整 ...

  10. CareerCup All in One 题目汇总

    Chapter 1. Arrays and Strings 1.1 Unique Characters of a String 1.2 Reverse String 1.3 Permutation S ...