linux环境变量export、declare、env、readonly、read

2018-07-04 19:17:59

export 可以打印和设置变量。

普通变量 只在当前 bash 中有效,新建的子进程都不会继承。

环境变量 新创建的子进程会继承。

export name	#把普通变量name添加到环境变量
export -n name	#从环境变量中移除
export -p	#打印出所有环境变量
#定义普通变量name
name=freecls

#将变量name添加到环境变量
export name
[root@localhost tmp]# export -p | grep name
declare -x name="freecls"


env 也可以用来打印环境变量

[root@localhost tmp]# env
...
SHELL=/bin/bash
HISTSIZE=1000
...
name=freecls
USER=root


declare 同样也可以操作环境变量。

declare -x name    #把普通变量name添加到环境变量
declare -r name	   #设置为只读,不能unset
declare -i sum=100+200	 #当做int型来处理,sum=300
#只显示只读环境变量
[root@localhost tmp]# readonly -p
...
declare -ir BASHPID
declare -ar BASH_VERSINFO='([0]="4" [1]="2" [2]="46" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu")'
declare -ir EUID="0"
declare -ir PPID="3008"
declare -r SHELLOPTS="braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor"
declare -ir UID="0"
#提示用户输入hint:,5秒内,并把输入的信息存入name
read -p hint: -t 5 name


$RANDOM 为0-32767之间的随机数。

[root@localhost tmp]# echo $RANDOM
22016
[root@localhost tmp]# echo $RANDOM
16053

#输出0-9随机数
[root@localhost tmp]# declare -i ram=$RANDOM*10/32768;echo $ram
9

$PS1 为登录的shell提示符。

[root@localhost tmp]# echo $PS1
[\u@\h \W]\$

$PATH 为默认搜索可执行文件的路径集合。

[root@localhost tmp]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/jdk-9/bin

特殊的 shell 变量

 变量含义 
 $0 脚本名
 $n 代表第n个参数
 $# 参数个数
 $* 所有参数作为单个字符串
 $@ 所有参数,每个参数独立
 $? 上一次指令的返回值
 $$ pid


备注:
1.本系列命令都在centos7里测试,其他发行版如ubuntu、debian、fedora、opensuse等可能略微不同
2.本文只讲解常用用法,详细用法请自行利用 man 命令查看
3.原文地址http://www.freecls.com/a/2712/83

 

©著作权归作者所有
收藏
推荐阅读
简介
天降大任于斯人也,必先苦其心志。