Linux Shell基础 环境变量
环境变量
环境变量和用户自定义变量最主要的区别在于,环境变量是全局变量,而用户自定义变量是局部变量。用户自定义变量只在当前的 Shell 中生效,而环境变量会在当前 Shell 和这个 Shell 的所有子 Shell 中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的 Shell 中永久生效。如果环境变量不写入配置文件,那么当前 Shell 一旦终止,这个环境变量就会消失。
在 Linux 中一般通过环境变量配置操作系统的环境,如提示符、查找命令的路径、用户家目录等,这些系统默认的环境变量的变量名是固定的,我们只能修改变量的值。
环境变量设置
t通过 export 命令将变量声明为环境变量。命令如下:
[root@localhost ~]# export JAVAHOME="/usr/local/bin/jdk-8u131"
也可以先把变量声明为本地变量,再用 export 声明为环境变量,命令如下:
[root@localhost ~]# JAVAHOME="/usr/local/bin/jdk-8u131"
[root@localhost ~]# export JAVAHOME
用户自定义变量和环境变量的区别就是:用户自定义变量只能在当前 Shell 中有效,而环境变量在当前 Shell 和所有子 Shell 中有效。比如:
[root@localhost ~]# name="zhang san"
#把姓名声明为本地变量
[root@localhost ~]# export age=""
#年龄声明为本地变量
[root@localhost ~]# gender=male
#性别声明为本地变量
[root@localhost ~]# export gender
#性别升级为环境变量
然后使用 set命令查询一下这些变量:
[root@localhost ~]# set
…省略部分内容…
gender=male
name='zhang san'
age=
在当前 Shell 中可以看到这三个变量。
再调用一次bash,也就是进入子Shell
[root@localhost ~]# bash
[root@localhost ~]# set
#再次查询变量
…省略部分输出…
age=
gender=male
在子Shell中只能看到环境变量"age"和"gender",而不能查询到用户自定义变量"name"
环境变量查询
set 既可以查询所有的变量,也可以查询环境变量,也可以使用 env 命进行环境变量的查询,命令如下:
[root@localhost ~]# env
HOSTNAME=localhost.localdomain
SELINUX_ROLE_REQUESTED=
SHELL=/bin/bash
…省略部分输出…
其中,set 命令可以查看所有变量,而 env 命令只能查看环境变量。
环境变量删除
通过unset 命令可以删除环境变量,命令如下:
[root@localhost ~]# unset gender
[root@localhost ~]# env | grep gender
#删除环境变量gender
PATH变量 :系统查找命令的路径
脚本在 Linux 中运行时,需要使用绝对路径或相对路径指定这个脚本所在的位置。PATH 环境变量中指定了系统命令的绝对路径,PATH 变量的值是用":"分隔的路径 。如果输入了一个命令,系统就会到 PATH 变量定义的路径中去寻找是否有可以执行的程序,如果找到则执行,否则会报"命令没有发现"的错误。也可以把用户自己写的脚本复制到 PATH 变量定义的路径中,通过脚本名来直接运行,例如。
[root@localhost ~]# cp /root/sh/hello.sh /bin/
#复制hello.shi到/bin/目录中
[root@localhost ~]# hello.sh
hello world
还可以通过将脚本对应的全路径追加到环境变量中,然后直接再通过脚本名来直接运行
[root@localhost ~]# PATH="$PATH":/root/sh
#在变量PATH的后面,加入/root/sh目录
[root@localhost ~]#hello.sh
hello world
PS1变量:命令提示符设置
PS1 是用来定义命令行的提示符的,可以按照我们自己的需求来定义自己喜欢的提示符。
PS1 可以支持以下这些选项:
- \d:显示曰期,格式为"星期 月 日"。
- \H:显示完整的主机名。如默认主机名"localhost.localdomain"。
- \h:显示简写的主机名。如默认主机名"localhost"。
- \t:显示 24 小时制时间,格式为"HH:MM:SS"。
- \T:显示 12 小时制时间,格式为"HH:MM:SS"。
- \A:显示 24 小时制时间,格式为"HH:MM"。
- \@:显示 12 小时制时间,格式为"HH:MM am/pm"。
- \u:显示当前用户名。
- \v:显示 Bash 的版本信息。
- \w:显示当前所在目录的完整名称。
- \W:显示当前所在目录的最后一个目录。
- \#:执行的第几条命令。
- \$:提示符。如果是 root 用户,则会显示提示符为"#";如果是普通用户,则会显示提示符为"$"。
使用示例
PS1 变量的默认值,如下:
[root@localhost bin]# echo $PS1
[\u@\h \W]\$
默认的提示符是显示"[用户名@简写主机名最后所在目录]提示符"
在 PS1 变量中,如果是可以解释的符号,如"\u"、"\h"等,则显示这个符号的作用;如果是不能解释的符号,如"@"或"空格",则原符号输出。
[root@localhost ~]# PS1='[\u@\t \w]\$'
注意 在PS1 变量的值要用单引号包含,否则设置不生效。而且这些提示符的修改同样是临时生效的,一旦注销或重启系统就会消失。要想永久生效,必须写入环境变量配置文件。
LANG变量:定义系统的主语系环境
LANG 变量的默认值如下:
[root@localhost bin]# echo $LANG
en_US.UTF-
[root@localhost bin]# locale
LANG=en_US.UTF-
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
其中LANG 是定义系统语言的变量,LC_ALL 是定义整体语言的变量。可以通过文件 /etc/sysconfig/i18n 定义系统的默认语言,查看一下这个文件的内容,如下:
[root@localhost src]# cat /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
如果系统重启,则会从默认配置文件 /etc/sysconfig/i18n 中读出系统字符集,然后赋予变量 LANG,让这个字符集生效。
Linux Shell基础 环境变量的更多相关文章
- Linux Shell基础 环境变量配置文件
source命令:使环境变量配置文件强制生效 source 命令会强制执行脚本中的全部命令,而忽略脚本文件的权限.该命令主要用于让重新配置的环境变量配置文件强制生效.source 命令格式如下: [r ...
- Shell基础-环境变量配置文件
Shell基础-环境变量配置文件 source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生效 主要的配置文件: /etc/p ...
- linux笔记:shell基础-环境变量配置文件
source命令(重新读入配置文件,不用重启就直接生效): 环境变量配置文件: linux中的环境变量配置文件(~代表当前用户的家目录): 配置文件读取顺序: /etc/profile 文件的作用:
- 【Linux】Shell三类变量的作用域——linux shell “永久环境变量”、“临时环境变量”和"普通变量"之完全解读
2015-05-08 00:15 3896人阅读 评论(10) 收藏 举报 本文章已收录于: 分类: 软件开发进阶(419) 作者同类文章X Unix/Linux杂项(118) 作者同类文章X ...
- Linux Shell基础 位置参数变量、预定义变量
位置参数变量 在 Linux 的命令行中,当一条命令或脚本执行时,后面可以跟多个参数,我们使用位置参数变量来表示这些参数.其中,$0 代表命令行本身,$1 代表第 1 个参数,$2 代表第 2 个参数 ...
- Linux Shell基础篇——变量
一.Shell中的变量 注:这里所说的Shell是Bash Shell,我姑且统称为Shell. Shell中的变量分为用户自定义变量.环境变量.位置参数变量.预定义变量.在Shell中,变量的默认类 ...
- Linux编程 21 shell编程(环境变量,用户变量,命令替换)
一.概述 这篇介绍shell的变量使用,跟其实语言一样,都有声明变量,使用变量,在shell中变量允许你临时地将信息存储中shell脚本中,以便和脚本的其他命令一起使用. 1.1 环境变量 在前面章节 ...
- Linux Shell基础(下)
Linux Shell基础(下) 目录 一.shell特殊符号cut命令 二.cut.sort.wc.uniq命令 三.tee.tr.split命令 四.简易审计系统 五.fork, exec, so ...
- Linux shell基础知识(上)
Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...
随机推荐
- linux设备树语法
设备树语法及绑定 概述 Device Tree是一种用来描述硬件的数据结构,类似板级描述语言,起源于OpenFirmware(OF). 就ARM平台来说,设备树文件存放在arch/arm/boot/d ...
- Vsphere日记03.ESXi5.5.client
3.Vsphere ESXi 5.5 client Vsphere Client介绍 1.Vsphere Client定义 Vsphere client隶属于Vsphere套件,主要用于远程管理ESX ...
- sql limit offset 区别
select * from table limit 2,1; //含义是跳过2条取1条数据,即读取第3条数据 select * from table limit 2 ...
- hadoop之WordCount源代码分析
//近期在研究hadoop.第一个想要要開始研究的必然是wordcount程序了.看了<hadoop应用开发实战解说>结合自己的理解,对wordcount的源代码进行分析. <pre ...
- apache+svn No installed service name 'Apache2' 【转载】
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://zys0597.blogbus.com/logs/32763815.html 问题:第一次在winxp下 安装apac ...
- C++11写算法之选择排序
选择排序,顾名思义,指从数组后面将最小的值找出来,然后与最前面(指当前位置)值进行交换. 时间复杂度:O(n^2) 空间复杂度:O(1) 此处应用了C++11的auto , lambda , stat ...
- 用ElasticSearch搭建自己的搜索和分析引擎【转自腾讯Wetest】
本文大概地介绍了ES的原理,以及Wetest在使用ES中的一些经验总结.因为ES本身涉及的功能和知识点非常广泛,所以这里重点挑出了实际项目中可能会用到,也可能会踩坑的一些关键点进行了阐述. 一 重要概 ...
- PID file found but no matching process was found. Stop aborted
一般脚本部署时不会遇到这种情况,有时候自个手动处理会出现”PID file found but no matching process was found. Stop aborted”,根据意思就可以 ...
- The E-pang Palace(暴力几何)
//暴力的几何题,问,n个点可以组成的矩形,不相交,可包含的情况下,最大的面积,还有就是边一定与 x y 轴平行,所以比较简单了 //暴力遍历对角线,搜出所有可能的矩形,然后二重循环所有矩形,判断一下 ...
- H - N皇后问题
H - N皇后问题 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descripti ...