谁能解释一下什么是LINUX的环境变量?以及功能?

谁能解释一下什么是LINUX的环境变量?以及功能?,第1张

在LINUX的环境下,打命令:

env

你可以看到环境变量。例如:

PWD=/home/wang

HOSTNAME=abcd.net

USER=wang

MACHTYPE=i386-redhat-linux-gnu

FTP_PASSIVE=1

MAIL=/var/spool/mail/wang

BASH_ENV=/home/wang/.bashrc

LOGNAME=wang

SHELL=/bin/bash

HOSTTYPE=i386

OSTYPE=linux-gnu

HISTSIZE=1000

HOME=/home/wang

TERM=xterm

等号前是环境变量名,等号后是环境变量值。

环境变量名可以用到程序里,程序可以获得它的值,根据值决定如何 *** 作,运行,找路径,文件夹等等。

环境变量的用途与PC (Windows ) 的环境变量的用途类似。

PC的环境变量可以打命令:

set

看到。例如:

ComSpec=C:\WINDOWS\system32\cmd.exe

CPU=i386

HOMEDRIVE=C:

LIB=C:\program Files\MicroSoft Visual Studio\VC98\LIB。。

OS=Windows_NT

Path=C:\Program Files\。。。

PROMPT=$P$G

。。。。

等号前是环境变量名,等号后是环境变量值。

Linux中环境变量的概念Windows上其实也有,就是系统执行环境的一些设置,环境变量有很多,比较常用的有:

PATH变量:是执行文件的查找路径的设置,就是在哪几个目录查找命令的二进制文件,这个变量最常用了,Windows上面也有这个变量。

LANG变量:设置终端的语系的变量,可以理解为英文、中文还是繁体中文的设置

HOME变量:指示出用户的主文件夹是哪个

PWD变量:当前用户当前的工作目录

环境变量其实有很多的,就不一一解释了,不同的变量有不同的作用,但都是shell环境的设置。所有的变量可以用env这个命令一下子列出来。

2.1.1 本地变量

定义:是在用户现在的shell生命期的脚本中使用

例:[redhat@server redhat]$name="Red Hat Linux" #把变量设置为Red Hat Linux

[redhat@server redhat]$echo ${name} or #显示变量内容

=[redhat@server redhat]$echo $name #等同上面的语意

Red Hat Linux #显示其设定内容,

[redhat@server redhat]$set | grep "name" #查看刚才所设定的内容,或不加'grep "name"'查看用户自己所有的本地变量,

[redhat@server redhat]$readonly name #把name这个变量设置为只读变量,不允许再次设置,这可参考变量定义-_-!

[redhat@server redhat]$name="He SenLin" #重新赋值

bash:name:readonly variable #只读文件系统

[redhat@server redhat]$readonly #查看系统存在的只读文件

附:重新登录一下系统,再次用

[redhat@server redhat]$echo ${name}

#本地变量就不存在了,

说明本地变量只能存活在用户shell的生命周期中,重登录就不在了,

2.1.2 环境变量

定义:环境变量用于所有用户进程<通称为子进程>,包括编辑器,脚本和应用,登录进程为父进程,shell中执行的用户进程均为子进程,不像本地变量只用于现在的shell.

存在目录在所有用户的主目录下<即/home>/.bash_profile或

如何设置环境变量?第一种方法就是编辑上面的二个文件,还可以用"export"进行设定或更改这可不像本地变量只需 name="Red Hat Linux"那样简单,但却可以把本地变量更改为环境变量只须在本地变量结束后,输入:export <变量名>例,我们把name由本地变量修改为环境变量,我们可以这样做

[root@server root]#name="Red Hat Linux" #本地变量

[root@server root]#export name #变量name由本地升为环境

当然也可以用下面这种方法

[root@server root]#export name="Red Hat Linux" #直接定义name为环境变量

定义后,可通过env进行查看,不知道上面的本地环境变量由哪个命令进行查看你记住了没有?,演示一下查看现在定义的环境变量

[root@server root]#env | grep "name"

Red Hat Linux

同样不加后面grep "name",这个参数也是查看所有的环境变量更同样的是我们也可以运行readonly这个参数给name以只读属性

Tips:环境变量就是全部包含在本地变量中<因为它即可运行中父进程中也可运行于子进程中>,注意一点,本地变量不能运行在全部进程中,只有环境变量可以,再不懂就联想一下人与自然吧-_-!还是不会?用绝招:

[root@server root]#you=myfriend #设置本地变量name为myfriend

[root@server root]#echo ${you} #查看一下是否成功

myfriend #成功

[root@server root]#sh #更换shell环境等同重登录,这相当一个

sh-2.05b#echo $you #用户子进程

#没显示,说明不存在,真的不存在?

sh-2.05b#exit #返回bash环境

[root@server root]#echo $you #再次查看

myfriend #又出来了,怎么回事?

[root@server root]#export you #把变量you设为环境变量

[root@server root]#sh #再试一次

sh-2.05b#echo $you

myfriend #ok,you see?

再不懂,,你就把我杀了吧,,什么,你不知道我住在哪?汗-_-!

再补充一点,就是在sh进程中设置环境变量是可以写回bash环境中,因为bash是父进程,只有老的才有小的,小的怎么才能有老的哩?<长大了就有老的喽,哦,也对!..乱语>

2.1.3 变量替换

定义:用变量的值替换它的名字.

查看方式:echo <通用本地,环境...>

可以用echo显示可以单个变量的取值

[root@server root]#str="this is example" #设置本地变量

[root@server root]#echo "can you see `echo $str`" #显示

cat you see this is example #替换就到这了,不明白明再来

变量替换续

除了上面的这个方式以外还有五种哦别急,一个一个来-_-!<先说好,偶不是皮条>

格式 定义

${variable name} 显示实际值到variable name 1

${variable name :+value} 如果设置了variable name,就把value显示,

未设置则为空2

${variable name:-value} 如果设置了variable name,就显示它,未设置就显示

value<仅显不存本地中>>3

${variable name:?value} 未设置提示用户错误信息value4

${variable name:=value} 如未设置就把value设置并显示<写入本地中>, 5

变量清除:

unset <变量name>

[root@server root]#echo $name #变量 name是否存在?

Red Hat Linux #存在

[root@server root]#unset name #清除name变量

[root@server root]#echo $name #是否成功

#成功

注意:如果用readonly限制了只读属性就会失败,还有怎么从环境变量中去掉那个变量呢?还记的用哪个设定环境变量的吗?对.export,只须在它后面加"-n"参数即可

2.1.4 位置变量

定义:位置变量表示$0,$1,$2,....$9

$0 $1 $2 $3 $4

脚本名 A B C D

向脚本中使用位置参数

向系统命令传递参数

例:./test<在程序中进行替换>

[root@server root]#vi /test #创建并编辑/test文件

#!/bin/bash

#test

echo "这是脚本的第一个名称: $0"

echo "这是脚本的第二个位置参数: $1"

echo "这是脚本的第三个位置参数: $2"

echo "这是脚本的第四个位置参数: $3"

echo "这是脚本的第五个位置参数: $4"

[root@server root]#chmod u+x ./test #加执行权限

[root@server root]#./test A B C #加参数证验

echo "这是脚本的第一个名称: ./test

echo "这是脚本的第二个位置参数: A

echo "这是脚本的第三个位置参数: B

echo "这是脚本的第四个位置参数: C

echo "这是脚本的第五个位置参数:

<向系统命令中传递位置参数>

[root@server root]#vi test1.sh#新建一个脚本文件

#!/bin/bash

#name:test1.sh

#to call: test1.sh 755 #使用方式

find ~ -perm $1 -print

$2 #系统命令

[root@server root]#chmod u+c test1.sh

[root@server root]#./test1.sh 755 date #位置一为755,2位date

/dev/ip

/dev/iput

.

.

.

Fri May 13 2:31:54 CST 2006

2.1.5 标准变量:

bash默认建立一些环境变量就是标准变量,可以通俗的说就是不是你加的而是装好机子带的那些环境变量, 可在/etc/profile中进行定义,

命令 意义

HOME 用户主目录

IFS 默认分隔符

MAIL 邮箱地址

MAILCHECK 邮箱检查间隔

PWD 用户当前工作目录

LOGNAME 当前用户登录名

2.1.6 特殊变量

命令 意义

$# 传递到脚本的参数列表

$? 前个命令执行情况,0成功,其它值失败

$$ 脚本运行的当前进程号

$! 运行脚本最后一个命令

$* 显示脚本全部参数

2.1.7 影响变量的命令

declare 设置或显示变量

-f 只显示函数名

-r 创建只读变量

-x 创建转出变量

-i 创建整数变量

使用"+"代替"-",可以颠倒选项的意思,-r除外,

export 用于传递给子shell的变量

-- 表明选项结束,所有后续参数都是实参,

-f 表明在"名-值"对中的名字是函数名,

-n 把全局变量转换成局部变量,换句话就是不再传给shell

-p 显示全局变量列表,

shift

用于移动位置变量,调整位置变量,使$3的值赋给$2.$2的值赋予$1.

[root@server root]#vi /test

#!/bin/bash

#test

echo "这是脚本的第一个名称: $0"

echo "这是脚本的第二个位置参数: $1"

echo "这是脚本的第三个位置参数: $2"

echo "这是脚本的第四个位置参数: $3"

echo "这是脚本的第五个位置参数: $4"

shift

echo "这是脚本的第二个位置参数: $1"

echo "这是脚本的第三个位置参数: $2"

[root@server root]#chmod u+x ./test

[root@server root]#./test A B C

echo "这是脚本的第一个名称: ./test

echo "这是脚本的第二个位置参数: A

echo "这是脚本的第三个位置参数: B

echo "这是脚本的第四个位置参数: C

echo "这是脚本的第五个位置参数: $4"

shift #显示的时候并没有,加在此只会明了

echo "这是脚本的第二个位置参数: B

echo "这是脚本的第三个位置参数: C

给shfit加一个数试一下:

[root@server root]#vi ./test

#!/bin/bash

#test

echo "这是脚本的第一个名称: $0"

echo "这是脚本的第二个位置参数: $1"

echo "这是脚本的第三个位置参数: $2"

echo "这是脚本的第四个位置参数: $3"

echo "这是脚本的第五个位置参数: $4"

shift 2

echo "这是脚本的第二个位置参数: $1"

echo "这是脚本的第三个位置参数: $2"

[root@server root]#./test A B C D

echo "这是脚本的第一个名称: ./test

echo "这是脚本的第二个位置参数: A

echo "这是脚本的第三个位置参数: B

echo "这是脚本的第四个位置参数: C

echo "这是脚本的第五个位置参数: D

shift 2 #显示的时候并没有,加在此只会明了

echo "这是脚本的第二个位置参数: C

echo "这是脚本的第三个位置参数: D

第二节 引号

2.1 引号的必要性

2.2 双引号有什么作用

2.3 单引号的作用

2.4 反引号的作用

2.5 反斜杠的作用


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8718970.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存