Linux 下Shell变量,环境变量的联系与区别
Linux下Shell变量,环境变量的联系与区别
by:授客 QQ:1033553122
1、 简介
linux下的变量可分成两种:Shell变量和环境变量。
Shell变量,又称本地变量,包括私有变量以及用户变量,不同类的shell有不同的私有变量,bash,ksh,csh等,每种shell的私有变量都不一样
环境变量,又称用户变量,与shell无关
常规定义变量的方法:变量名=变量值
注意:
1.变量名和=号之间不能有空格,否则shell会把变量名当成命令
2.变量名称一般使用大写字母
2、 常用的相关命令
env命令:显示当前用户的环境变量
set命令:不加参数,显示当前shell的所有本地设置的Shell变量,否则设置shell变量
unset命令:unset为shell内建指令,删除变量或函数。
exprot命令:显示(设置)当前导出成用户变量的shell变量(注意:export为bash或类bash私有的命令)
echo $变量名:查看变量值(其中,$变量:引用变量的意思)
3、 示例
a) 使用env命令显示当前用户的所有环境变量
[laiyu@localhost ~]$ env
HOSTNAME=localhost.localdomain
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
USER=laiyu
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;...
MAIL=/var/spool/mail/laiyu
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/laiyu/bin
PWD=/home/laiyu
LANG=en_US.UTF-8
...
HOME=/home/laiyu
LOGNAME=laiyu
...
_=/bin/env
b) 使用set命令显示当前shell的所有本地Shell变量
[root@localhost ~]# set | more
BASH=/bin/bash
...
BASH_CMDS=()
...
c) 使用unset命令来清除变量(不管是shell变量还是环境变量)
[laiyu@localhost ~]$ export TEST=test #增加一个环境变量TEST
[laiyu@localhost ~]$ env | grep TEST #查看增加的变量
TEST=test
[laiyu@localhost ~]$ unset $TEST #删除环境变量TEST(这里TEST前有无美元符都一样)
[laiyu@localhost ~]$ env | grep TEST #输出为空
注意:unset只能删除非只读变量
d) 使用echo命令显示环境变量(HOME变量为例)
[root@localhost ~]# echo $HOME
/root
e) 使用export命令将shell变量导出为用户变量,并显示
列出所有的Shell赋予程序的环境变量
[root@localhost ~]# export -p #等同export
...
declare -x HOME="/root"
declare -x HOSTNAME="localhost.localdomain"
declare -x LANG="en_US.UTF-8"
declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/bin/:/usr/local/tsung/bin"
...
把shell变量导出为用户变量
[root@localhost ~]# SHOUKE=ishouke #定义shell变量
[root@localhost ~]# echo $SHOUKE
ishouke
#查看当前用户的用户变量是否存在SHOUKE变量,结果是不存在
[root@localhost ~]# env | grep SHOUKE
#查看当前shell的本地变量是否存在SHOUKE变量,结果是不存在
[root@localhost ~]# set | grep SHOUKE
SHOUKE=ishouke
#查看Shell赋予程序的环境变量中是否存在SHOUKE变量,结果不存在
[root@localhost ~]# export | grep SHOUKE
#导出shell变量为用户变量
[root@localhost ~]# export SHOUKE
[root@localhost ~]# env | grep SHOUKE
SHOUKE=ishouke
[root@localhost ~]#
--------------------------------------
也可以如下方式使用export
[root@localhost ~]# export SHOUKE=ishouke
[root@localhost ~]# env | grep SHOUKE
SHOUKE=ishouke
[root@localhost ~]#
注意:以上的设置仅在当前打开的shell窗口或或其子shell窗口中起作用,临时的,关闭当前shell窗口或重启机器,则刚才的设置失效,,或打开一个新窗口,设置在新窗口中不起作用。
Linux 下Shell变量,环境变量的联系与区别的更多相关文章
- 嵌入式 Linux下永久生效环境变量bashrc
嵌入式 Linux下永久生效环境变量bashrc 1) .bashrc文件 在linux系统普通用户目录(cd /home/xxx)或root用户目录(cd /root)下,用指令ls -al可以看到 ...
- Linux下配置Node环境变量及问题详解
这是之前在Linux下配置Node环境变量时踩过的坑,今天又有小伙伴询问这个问题,因此记录下来,不仅是给新童鞋们一些参考,也方便日后查阅 在这之前,相信都已经安装好了,没安装的可以查看博主另一篇文章 ...
- Java java jdk在Linux下安装与环境变量的配置
java jdk在Linux下安装与环境变量的配置 by:授客 QQ:1033553122 linux环境:CentOS-6.0-x86_64-bin-DVD1.iso [root@localhost ...
- Linux下各种常见环境变量的配置
Linux系统下各种环境变量都通过修改/etc/profile文件来实现.由于是系统文件,修改此文件需要root权限.因此实现以下功能都需要用户拥有root权限. 另:不要轻易修改profile文 ...
- 14行脚本配置Linux下一个Java环境变量
供Java人们刚开始学习.多半Java它需要花费大量的精力在开发环境的配置,于Linux下一个,构造Java环境变量,很可能加入这一努力. 为此,我做了一个bash脚本来配置自己主动Java环境变量. ...
- Linux下设置oracle环境变量
Linux设置Oracle环境变量 方法一:直接运行export命令定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新s ...
- linux下添加PATH环境变量
添加PATH环境变量,第1种方法:[root@lx_web_s1 ~]# export PATH=/usr/local/webserver/mysql/bin:$PATH 再次查看: [root@lx ...
- Linux下配置Java环境变量
今天开始简单的学习了一下在Linux下安装jdk 写下来总结一下以便后来的查找和复习 首先下载Linux版的jdk我这里使用的jdk1.7:http://download.oracle.com/otn ...
- linux下设置phantomjs环境变量
1)vim /etc/profile2)在文件的最后一行,添加安装路径path语句:(注意路径是phantomjs的安装路径)export PATH=${PATH}:/usr/local/src/ph ...
- linux下设置opencv环境变量
一.安装opencv(这里不再讲述) 二.添加库路径(创建opencv.conf文件) 输入命令:vi /etc/ld.so.conf.d/opencv.conf 输入/usr/local/lib,并 ...
随机推荐
- Java 实现网络图片的读取与下载
//网络图片的下载,读取与删除 public static void fileDowAndDel(String httpurl){ try { URL url = new URL(httpurl); ...
- js中的柯里化
概述 今天查询事件绑定资料的时候偶然遇到了柯里化这个词,很感兴趣,于是记录下来供以后开发时参考,相信对其他人也有用. 定义 柯里化是函数式编程里面的术语,它是把接受多个参数的函数变换成接受一个单一参数 ...
- kubernetes集群搭建(3):master节点安装
1.master节点上执行: yum -y install kubernetes flannel etcd 2.修改etcd配置为: [root@k8s-master ~]# vi /etc/etcd ...
- Python总纲路线
比较全面的Python学习方案: 一,Python 基础教程 二,Python 高级教程 这是系统写学习资料参考,后面会整理单个的学习应用内容. 廖雪峰Python教程传送门
- 第一篇:服务的注册与发现Eureka(Finchley版本)
一.创建服务注册中心(Eureka) 1. 首先创建一个maven主工程 创建一个主Maven工程,在其pom文件引入依赖,spring Boot版本为2.0.3.RELEASE,Spring Clo ...
- linux内核中GNU C __attribute__ 机制的实用
很多东西,只看看是不行的,要想深入的去了解一个东西,一定要去不断地学习,实践,反思. 说白了就是要去打磨. 在linux中,最近遇到了这样一个定义: int board_usb_init(int in ...
- vue 自动化部署 jenkins 篇
前端项目打包部署,以前都是手工运行打包命令,打包结束后压缩,然后上传到服务器上解压部署.这种重复性的工作,确实有点让人烦,而且效率也不高. 本文基于 vue 的前端项目. GitHub 的代码仓库,简 ...
- 测试工具之Match Tracer(正则表达式匹配工具)
这个工具完全界面化,非常好用,如果对自己写的正则表达式不够确定,可以使用这个软件来试水一下 从下面网址可以下载: http://www.regexlab.com/zh/mtracer/download ...
- .net 连接kafka
新建两个控制台项目,一个生产者,一个消费者,使用Nuget安装Confluent.Kafka 生产者 static void Main(string[] args) { var config = ne ...
- 从零开始学 Web 之 HTML5(三)网络监听,全屏,文件读取,地理定位接口,应用程序缓存
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...