1、临时变量
当前用户自定义的变量,只在当前进程中有效。其他进程及当前进程的子进程无效。
(1)定义方式
- 基本方式:变量名=变量值
[root@server1 shells]# a=4
[root@server1 shells]# echo $a
4
- 命令执行结果输入给变量:变量名=`执行的命令``
[root@server1 shells]# name=`hostname`
[root@server1 shells]# echo $name
server1
[root@server1 shells]# name=$(hostname)
[root@server1 shells]# echo $name
server1
[root@server1 shells]# name="$(hostname)"
[root@server1 shells]# echo $name
server1
[root@server1 shells]# a=`uname -r`
[root@server1 shells]# echo $a
3.10.0-862.el7.x86_64
- 交互式定义变量read
通过文本输入
[root@server1 shells]# vim ip.txt
[root@server1 shells]# read -p "input ip:" IP < ip.txt
[root@server1 shells]# echo $IP
192.168.13.125
通过用户自定义
[root@server1 shells]# read -s -p "passwd:" mima
passwd:
[root@server1 shells]# echo $mima
westos
(2)证实
因为两个终端分别分配了不同的PID,也就是不同的进程:
两个不同的用户呢?
2、环境变量(针对当前用户所有的子进程生效)~/bash.rc
(1)如何定义一个环境变量
-
如果这个变量是一个已经被定义好的临时变量,利用export 变量名,就可以将该变量改为环境变量。
-
或者直接export 变量名=变量值
(2)实证
[kiosk@server1 shells]$ export name=kongying
[kiosk@server1 shells]$ env |grep name
name=kongying
[kiosk@server1 shells]$ /bin/bash //打开另一个子进程bash
[kiosk@server1 shells]$ ps //查看进程
PID TTY TIME CMD
5169 pts/0 00:00:00 bash
10541 pts/0 00:00:00 bash
10584 pts/0 00:00:00 ps
[kiosk@server1 shells]$ env |grep name
name=kongying //也就是说,环境变量共享于同一进程与其子进程之间
如果不同用户呢?
也是不共享的,因为:
3、全局变量(/etc/profile)
(1)什么是全局变量?
(2)相关配置文件
/etc/bashrc:
定义命令的别名、umask、函数
[kiosk@server1 shells]$ vim /etc/profile
(3)系统登陆读取相关文件顺序:
4、系统变量
[kiosk@server1 shells]$ ldvv
bash: ldvv: command not found...
[kiosk@server1 shells]$ echo $?
127
[kiosk@server1 shells]$vim ll
[kiosk@server1 shells]$ echo $?
0
[kiosk@server1 shells]$ echo $0
/bin/bash