- 用env查看环境变量与常见环境变量说明
变量名 含义 HOSTNAME 主机名 TERM 终端机使用的环境类型 SHELL 这个环境下使用的shell程序 HISTSIZE 命令的条数 USER 用户名称 MAIL 用户取用的mailbox位置 PATH 执行文件命令查找路径 INPUTRC 与键盘按键功能有关,可以设置特殊按键 PWD 目前用户所在工作目录 LANG 与语系有关 HOME 用户的主文件夹 _ 上次使用的命令的最后一个参数 - 用set查看所有变量
变量 含义 BASH bash的主程序放置的路径 BASH_VERSION bash的版本 COLORS 颜色记录的文件 COLUMNS 使用的字段有几个字符长度 HISTFILE 历史命令记录的放置文件,隐藏文件 OLDPWD 上一个工作目录 OSTYPE 操作系统类型 - PS1提示符的设置
符号 意义 \d 可以显示出星期月日的日期格式,如"Mon Feb 2" \H 完整的主机名字 \h 仅取主机名在第一的小数点之前的名字 \t 显示时间,为24小时格式"HH:MM:SS" \T 显示时间,为12小时格式"HH:MM:SS" \A 显示时间,为24小时格式"HH:MM" @ 显示时间,为12小时格式的"am/pm" \u 目前账号名称如root \v BASH版本信息 \w 完整的工作目录名称,由根目录写起的目录名称 \W 利用basename函数取得工作目录名称 # 执行的第几个命令 $ 提示符,如果是root则为#,否则为$ [root@www ~]# cd /home [root@www home]# PS1='[\u@\h\w\A#\\#]\$' [root@www /home 17:02 #85]# - $代表关于本shell的PID
$本身是一个变量,代表的是目前Shell这个线程代号,就是PID,如果想直到shell的PID,直接在命令行输入 “echo $$”,出现的数字就是PID号码 - ?代表关于上个命令的回传码
问号也是一个特殊变量。当我们执行某些命令时,这些命令都会回传一个执行后的代码,一般来说,如果成功执行该命令,则会回传一个0,如果执行错误,就会回传"错误代码",一般已非0值替代。 - OSTYPE,HOSTTYPE,MACHTYPE代表主机硬件与内核等级
CPU主要分为32位和64位,其中32位中又可分为i386,i586,i686,而64位则称为x86_64。由于不同等级的CPU的命令集不同,因此软件可能会针对某些CPU进行优化。 - export自定义变量转换为环境变量
环境变量和自定义变量的区别就是这个变量是否会被子进程继续引用。子进程只会继承父进程的环境变量,子进程不会继承父进程的自定义变量。export 变量名称 - 影响显示结果的语系变量locate
当使用man command的方式去查询某个数据说明文件时,该说明文件的内容可能会因为我们使用的语系不同而产生乱码。另外利用ls查询文件的时间时,也有可能会有乱码出现在时间部分。locate -a #这个命令用来查询Linux里面有多少个语系 - 变量有效范围
Q:为什么环境变量的数据可以被子进程所引用
A:当启动一个shell,操作系统会分配一个记忆块给shell使用,此内存内的变量可让子进程取用。若在父进程利用export功能,可以让自定义变量内容写到上述的记忆块中,当加载另一个shell时,子shell可以将父shell的环境变量所在的记忆块导入自己的环境变量块中。 - 变量键盘读取、数组与声明:read,array,declare
-
read。要读取来自键盘输入的变量,就是用read命令。
read [-pt] variable_name参数 含义 -p 后面可以接提示符 -t 后面可以接等待的"秒数",不会一直等待用户输入 [root@www ~]#read atest This is a test <==此时光标会等待输入 [root@www ~]#echo $atest This is a test[root@www ~]#read -p "Please keyin your name: " -t 30 name Please keyin your name: Edmond <==出现了提示符 [root@www ~]#echo $name Edmondread之后不加任何参数,直接加上变量名字,就会直接出现一个空白行等待输入。如果加上-t秒数,那么30秒内没有任何操作,命令就会自动略过,如果加上-p参数,那么输入光标前面会出现提示符。
-
declare/typeset。声明变量类型
参数 含义 -a 将后面变量名的变量定义为数组 -i 将后面变量名的变量定义为整数数字类型 -x 用法与export一样,将后面的变量名变成环境变量 -r 将变量设置为readonly类型,给变量不可被更改内容,也不能重设 [root@www~]#sum=100+300+50 [root@www~]#echo $sum 100+300=50 <=====因为是文字类型,所以直接显示了 [root@www~]declare -i sum=100+300+50 [root@www~]echo $sum 450 <=====显示结果 [root@www~]#declare -x sum <======将sum变成环境变量 [root@www~]#export | grep sum declare -ix sum="450" [root@www~]#declare -r sum <======将sum变成只读属性 [root@www~]#sum=tesgting -bash:sum:readonly variable <======这个变量不能改变 [root@www~]#declare +x sum <======将-号变成+可以进行取消操作 [root@www~]#declare -p sum <======可以单独列出变量类型 declare -ir sum="450"- 数组类型array
数组的设置方式var[index]=content,意思是有一个数组名为var,而这个数组的内容为var[1]=“small min”,var[2]=“big min”,var[3]=“nice min”。
数组类型的读取建议直接使用${数组}的方式来读取
- 数组类型array
-
- 与文件系统及程序的限制关系:ulimit
bash可以限制用户某些系统资源的,包括打开的文件数量,可以使用的CPU时间,可以使用的内存总量。参数 含义 -H 严格设置,必定不能超过这个设置的数值 -S 警告设置,可以超过这个设置的值,但是若超过则有警告信息,通常-S设置的值比-H的小 -a 后面不接任何参数 -c 当某进程发生错误时,系统可能将该进程在内存中的信息写入文件 -f 此shell可以创建的最大文件容量,单位为KB -d 进程可以使用的最大断裂内存容量 -l 可以用于锁定lock的内存量 -t 可以使用的最大CPU时间,单位为秒 -u 单一用户可以使用的最大进程数量
一般用户如果以ulimit设置了-f文件大小,那么他只能减少文件容量,不能增加文件容量。[root@www~]#ulimit -a <=========列出目前身份的所有限制数值 core file size (blocks,-c) 0 <==只要是0就代表没有限制 data seg size (kbytes,-d) unlimited scheduling priority (-e) 0 file size (blocks,-f) unlimited <==可以创建的单一文件的大小 open files (-n) <==同时可以打开的文件数量 - 变量内容的删除、替代与替换
- 变量内容的删除
${variable#/*kerberos/bin:}
variable是变量名称
#代表从变量内容最前面开始向右删除,且仅删除最短的那个,
/*kerberos/bin: 代表要被删除的部分,由于#代表由前面开始删除,所以删除的路径从/开始写。
如果把上面的#替换为##那么就是从前面删除匹配的最长的内容。
那么如果想从后面开始删除,就把#替换为%号。 - 变量内容的替换
${path/sbin/SBIN}
两个斜线之间的是需要替换的字符,两个最后那个字符是需要被替换的字符,但是只会替换第一个符合的内容
${path//sbin/SBIN}
如果是两个斜线,就会变成符合的内容都会被替代变量设置方式 说明 ${变量#关键字} 若变量内容从头开始的数据符合"关键字",则将符合的最短数据删除 ${变量##关键字} 若变量内容从头开始的数据符合"关键字",则将符合的最长数据删除 ${变量%关键字} 若变量内容从尾开始的数据符合"关键字",则将符合的最短数据删除 ${变量%%关键字} 若变量内容从尾开始的数据符合"关键字",则将符合的最长数据删除 ${变量/旧字符串/新字符串} 若将变量内容符合"旧字符串",则第一个旧字符串会被新字符串替换 ${变量//旧字符串/新字符串} 若将变量内容符合"旧字符串",则所有旧字符串会被新字符串替换 - 变量测试与内容替换
当我们需要判断某一个变量是否存在,如果存在就使用既有的设置,如果不存在就给予一个常用的设置。
但是上面的操作有一个问题,如果username里面的值是空字符串,比如username="",那么echo ${username-root}是没有办法给username设置内容的。[root@www~]#username=${username-root} [root@www~]#echo $username root <==username因为uername没有设置,所以主动给给予名为root的内容 [root@www~]#username="an apple" [root@www~]#echo ${username-root} an apple <==因为username已经被设置了,所以不能被设置为root
在大括号内加上冒号后,被测试变量未被设置或是一已被设置为空字符串,都能使用后面的内容来替换与设置。[root@www~]#username="" [root@www~]#username=${username:-root} [root@www~]#echo username root变量设置方式 str没有设置 str为空字符串 str已设置非为空字符串 var=${str-expr} var=expr var="" var=$str var=${str:-expr} var=expr var=expr var=$str var=${str+expr] var= var=expr var=expr var=${str:+expr} var= var= var=expr var=${str=expr} str=expr var=expr str="" var="" str不变 var=$str var=${str:=expr} var=expr str=expr str=expr var=expr str不变 expr=str
- 变量内容的删除
环境变量的功能
最新推荐文章于 2023-10-27 11:32:22 发布
本文介绍了Linux环境变量的查看方法,如env和set,重点解析了$、?、OSTYPE等特殊变量的含义。此外,讨论了环境变量与自定义变量的区别,以及export如何将变量变为环境变量。还探讨了语系变量对显示的影响,子进程继承环境变量的原理,以及通过read和declare声明变量和数组。最后,文章提及了ulimit在限制系统资源方面的作用,如限制文件大小、CPU时间和内存总量。
270

被折叠的 条评论
为什么被折叠?



