计算机网络/计算机科学与应用/系统/运维/开发

二、Shell变量

1、什么是变量

变量就是用一个固定的字符串(也可能是字符、数字等的组合)代替更多、更复杂的内容,该内容里可能还会包含变量、路径、字符串等其他的内容。

变量是暂时存储数据的地方及数据标记,所存储的数据存在于内存空间中,通过正确地调用内存空间中变量的名字就可以取出与变量对应的数据


2、定义变量

变量名=值

注意 = 两边不能有空格

[root@localhost ~]# name="I am shell"


3、打印变量

$变量名 

    [root@localhost ~]# echo $name

am shell


4、变量类型

环境变量(全局变量)和普通变量(局部变量)

环境变量也可称为全局变量

环境变量又可分为自定义环境变量和bash内置的环境变量

普通变量也可称为局部变量

环境变量:

一般指用export内置命令导出的变量 

环境变量可以在命令行中设置和创建,但用户退出命令行时这些变量值就会丢失

如果希望永久保存环境变量,可在用户家目录下的.bash_profile或.bashrc(非用户登录模式特有,

例如远程SSH)文件中,或者全局配置/etc/bashrc(非用户登录模式特有,例如远程SSH)或/etc/profile文件中定义

规范:所有环境变量的名字均采用大写形式

export NAME="shell"

系统定义好的环境变量:

通常环境变量被定义并保存在用户家目录下的.bash_profile文件或全局的配置文件/etc/profile中

[root@localhost ~]# env

XDG_SESSION_ID=1

HOSTNAME=localhost.localdomain

SELINUX_ROLE_REQUESTED=

TERM=xterm

SHELL=/bin/bash

set命令输出所有的变量,包括全局变量和局部变量;

env命令只显示全局变量;

declare命令输出所有的变量、函数、整数和已经导出的变量


5、自定义环境变量

给变量赋值之后或在设置变量时使用export命令

***设置变量的几种方式:

export 变量名=value

变量名=value;export 变量名 

declare -x 变量名=value 

[root@localhost ~]# export NAME=shell

[root@localhost ~]# declare -x NAME=shell

[root@localhost ~]# NAME=shell;export NAME

自定义全局环境变量:

[root@oldboy script]# cat /etc/profile|grep OLD

export OLDBOY='oldboy' #<==编辑/etc/profile,然后输出此行并保存

[root@oldboy script]# source /etc/profile        #<==或./etc/profile使其生效

[root@oldboy script]# echo $OLDBOY               #<==在变量前加$符号并打印变量值

oldboy

[root@oldboy script]# env|grep OLDBOY            #<==查看定义结果

OLDBOY=oldboy

环境变量永久生效的常用设置文件

(1)用户的环境变量配置:

[root@oldboy scripts]# ls /root/.bashrc         #<==推荐在此文件中优先设置

/root/.bashrc

[root@oldboy scripts]# ls /root/.bash_profile

/root/.bash_profile

对于用户的环境变量设置,比较常见的是用户家目录下的.bashrc和.bash_profile

(2)全局环境变量的配置

/etc/profile

/etc/bashrc                                           #<==推荐在此文件中优先设置

/etc/profile.d/

若要在登录后初始化或显示加载内容,则把脚本文件放在/etc/profile.d/下即可(无须加执行权限)。

***设置登录提示的两种方式:

第一种是在/etc/motd里增加提示的字符串

[root@oldboy ~]# cat /etc/motd                    #<==文件里仅为字符串内容

welcome to oldboy linux Shell training.

第二种是在/etc/profile.d/下面增加如下脚本

[root@oldboy ~]# cat /etc/profile.d/oldboy.sh #<==这里是脚本的内容

echo " Here is oldboy training "

实例:java环境中,自定义变量

export JAVA_HOME=/application/jdk

export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

export RESIN_HOME=/application/resin


6、显示与取消环境变量

(1)通过echo或printf命令打印环境变量

常见系统环境变量:

[root@localhost ~]# echo $HOME

/root

[root@localhost ~]# echo $UID

0

[root@localhost ~]# echo $PWD

/root

[root@localhost ~]# echo $SHELL

/bin/bash

[root@localhost ~]# echo $USER

root

(2)用env或set显示默认的环境变量

env(printenv)显示默认环境变量

set也可以显示环境变量(包括局部变量)

(3)用unset消除本地变量和环境变量

消除本地变量和环境变量

[root@localhost ~]# unset USER

[root@localhost ~]# echo $USER


7、环境变量总结

变量名要大写

变量可以在自身的shell以及子shell中使用

常用export定义环境变量

执行env默认可以显示所有的环境变量名称以及对应的值

输出时用 "$变量名"  取消时用 "unset 变量名"

如果希望环境变量永久生效,则可以将其放在用户环境变量文件或全局环境变量文件里


8、环境变量初始化与对应文件的生效顺序

登录系统后首先会加载/etc/profile全局环境变量文件

执行/etc/profile.d目录下的脚本文件

之后开始运行$HOME/.bash_profile(用户环境变量文件)


你努力了什么,也就成就了什么,与其羡慕别人,不如蜕变自己。

评论

^