shell变量及环境变量配置文件详解
2017-11-17 16:23
525 查看
前言
在前面学过一个变量PATH,它是shell预设的一个变量。通常,shell预设的变量都是大写的。变量就是使用一个较简单的字符串来代替某些具有特殊意义的设定以及数据。PATH就代替了所有常用命令的绝对路径的设定。有了PATH这个变量,我们运行某个命令时,就不再需要输入全局路径,直接输入命令命即可。使用echo显示变量的值
[root@localhost ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin [root@localhost ~]# echo $HOME /root [root@localhost ~]# echo $PWD /root [root@localhost ~]# echo $LOGNAME root
命令env
[root@localhost ~]# env XDG_SESSION_ID=2 HOSTNAME=localhost.localdomain SELINUX_ROLE_REQUESTED= TERM=xterm SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=192.168.56.1 51097 22 SELINUX_USE_CURRENT_RANGE= SSH_TTY=/dev/pts/0 USER=root 。。。。。。。。。 MAIL=/var/spool/mail/root PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin PWD=/root LANG=zh_CN.UTF-8 SELINUX_LEVEL_REQUESTED= HISTCONTROL=ignoredups SHLVL=1 HOME=/root LOGNAME=root SSH_CONNECTION=192.168.56.1 51097 192.168.56.128 22 LESSOPEN=||/usr/bin/lesspipe.sh %s XDG_RUNTIME_DIR=/run/user/0 _=/usr/bin/env
说明:登录不同的用户,这些环境变量的值也不同。当前显示的是root账户的环境变量。
HOSTNAME :表示主机的名称
SHELL :表示当前用户的shell类型
HISTSIZE :表示历史记录数
MAIL :表示当前用户的邮件存放目录
PATH :该变量决定了shell将到哪些目录中寻找命令或者程序。
LANG :这是与语言相关的环境变量,多语言环境可以修改此环境变量。
PWD :表示当前目录
HOME :表示当前用户的家目录
LOGNAME :表示当前用户的登录名
env命令显示的变量只是环境变量,系统预设的变量其实还有很多,你可以使用set命令把系统预设的全部变量都显示出来。
自定义变量
[root@localhost ~]# set |grep 1.txt a=1.txt
变量名规则
字母、数字下划线,首位不能为数字;变量值有特殊符号时需要用单引号括起来(单引号有脱意功能)。变量累加
[root@localhost ~]# a=123 [root@localhost ~]# b=456 [root@localhost ~]# c="$a$b"789 [root@localhost ~]# echo $c 123456789
说明:当累加的时候只能是双引号。
注意事项
当变量内容带有特殊字符(如空格时),需要加上双引号。如下例子# myname="DL Li" # echo $myname DL Li
当变量内容中本身带有单引号,这时就需要加双引号了,如下例子
# myname="DL 's" # echo $myname DL 's
当变量内容中需要用到其他命令,运行结果则可以使用反引号,如下例子
# myname=`pwd` #echo $myname /root
当变量中需要累加其他变量内容是,需要加双引号,如下例子
#myname="$LOGNAME"DL #echo $myname rootDL
当把双引号错加成单引号时,得不到想要的结果,如下例子
#myname='$LOGNAME'DL #echo $myname $LOGNAMEDL
全局变量
export当在一个父shell下设定一个变量后,进入子shell该变量并不生效,如果想让该变量在子shell下生效需要使用export声明一下才可以(跨终端不生效)。
语法: export [变量名] 当export不指定变量时,它会声明系统所有变量。
[root@localhost ~]# a=DL [root@localhost ~]# echo $a DL [root@localhost ~]# export a=DL [root@localhost ~]# echo $a DL [root@localhost ~]# bash //在同一个sshd重新打开一个bash(相当于全局变量) [root@localhost ~]# echo $a DL
说明: 当在子shell设定变量后即便声明后也不能在父shell生效。
查看当前终端
[root@localhost ~]# w 15:34:47 up 2:18, 3 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 13:17 2:17m 0.04s 0.04s -bash root pts/0 192.168.56.1 13:18 7.00s 0.20s 0.00s w root pts/1 192.168.56.1 14:55 9:43 0.03s 0.03s -bash [root@localhost ~]# echo $SSH_TTY /dev/pts/0
以树状图显示
[root@adai002 ~]# bash[root@adai002 ~]# pstreesystemd─┬─NetworkManager───2*[{ c1da NetworkManager}] ├─auditd───{auditd} ├─chronyd ├─crond ├─dbus-daemon ├─firewalld───{firewalld} ├─login───bash ├─lvmetad ├─master─┬─pickup │ └─qmgr ├─polkitd───5*[{polkitd}] ├─rsyslogd───2*[{rsyslogd}] ├─sshd───sshd─┬─bash───bash───pstree //可见,在同一个sshd中打开了两个bash。第二个bash相当于子shell │ └─bash ├─systemd-journal ├─systemd-logind ├─systemd-udevd ├─tuned───4*[{tuned}] └─vmtoolsd───{vmtoolsd}
删除变量 unset
语法: unset [变量名],示例如下
[root@localhost ~]# a=12312312 [root@localhost ~]# echo $a 12312312 [root@localhost ~]# unset a [root@localhost ~]# echo $a
环境变量配置文件
环境变量配置文件分为系统环境变量配置文件和用户环境变量配置文件。系统配置文件(严禁改动)
/etc/profile 用户环境变量,交互,登录才执行
/etc/bashrc 用户不用登录,执行shell就生效
用户配置文件
.bashrc 该文件主要预设umask以及PS1。这个PS1就是我们在输入命令时前面的那串字符。
# echo $PS1 [\u@\h \w]\$
其中,\u指用户,\h指主机名,\w指当前目录,$指字符(如果当前是普通用户,会显示$)
.bash_history 记录命令历史
.bash_logout 在此可以设定退出登录时系统执行的操作(如清除缓存、清除历史记录等等)
相关文章推荐
- Shell基础-环境变量配置文件-简介
- Shell编程之环境变量配置文件
- Shell的环境变量配置文件
- Shell基础-环境变量配置文件
- Shell编程之环境变量配置文件
- L24 shell基础知识(二)管道符-作业控制-shell变量-环境变量配置文件
- 管道符和作业控制、shell变量、环境变量配置文件
- Linux中环境变量配置文件详解
- shell编程之环境变量配置文件(4)
- Linux系统Shell的环境变量配置文件介绍
- linux中环境变量及环境变量配置文件详解
- shell基础-环境变量配置文件
- Shell基础-环境变量配置文件-其他配置文件和登录信息
- bash配置文件/etc/profile,/etc/bashrc,~/.bash_profile,~/.bashrc详解及修改PATH环境变量
- 11.16 管道符和作业控制 , shell变量 , 环境变量配置文件
- Shell基础-环境变量配置文件-作用
- shell之环境变量配置文件
- Shell基础(三):环境变量配置文件