shell变量及环境变量配置文件详解
来源:互联网 发布:美图app软件 编辑:程序博客网 时间:2024/05/21 01:47
前言
在前面学过一个变量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 $LOGNAMEroot
- 命令env
[root@localhost ~]# envXDG_SESSION_ID=2HOSTNAME=localhost.localdomainSELINUX_ROLE_REQUESTED=TERM=xtermSHELL=/bin/bashHISTSIZE=1000SSH_CLIENT=192.168.56.1 51097 22SELINUX_USE_CURRENT_RANGE=SSH_TTY=/dev/pts/0USER=root。。。。。。。。。MAIL=/var/spool/mail/rootPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/binPWD=/rootLANG=zh_CN.UTF-8SELINUX_LEVEL_REQUESTED=HISTCONTROL=ignoredupsSHLVL=1HOME=/rootLOGNAME=rootSSH_CONNECTION=192.168.56.1 51097 192.168.56.128 22LESSOPEN=||/usr/bin/lesspipe.sh %sXDG_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.txta=1.txt
变量名规则
字母、数字下划线,首位不能为数字;变量值有特殊符号时需要用单引号括起来(单引号有脱意功能)。
变量累加
[root@localhost ~]# a=123[root@localhost ~]# b=456[root@localhost ~]# c="$a$b"789[root@localhost ~]# echo $c123456789
说明:当累加的时候只能是双引号。
注意事项
- 当变量内容带有特殊字符(如空格时),需要加上双引号。如下例子
# myname="DL Li"# echo $mynameDL Li
- 当变量内容中本身带有单引号,这时就需要加双引号了,如下例子
# myname="DL 's"# echo $mynameDL 's
- 当变量内容中需要用到其他命令,运行结果则可以使用反引号,如下例子
# myname=`pwd`#echo $myname/root
- 当变量中需要累加其他变量内容是,需要加双引号,如下例子
#myname="$LOGNAME"DL#echo $mynamerootDL
- 当把双引号错加成单引号时,得不到想要的结果,如下例子
#myname='$LOGNAME'DL#echo $myname$LOGNAMEDL
全局变量
export
当在一个父shell下设定一个变量后,进入子shell该变量并不生效,如果想让该变量在子shell下生效需要使用export声明一下才可以(跨终端不生效)。
语法: export [变量名] 当export不指定变量时,它会声明系统所有变量。
[root@localhost ~]# a=DL[root@localhost ~]# echo $aDL[root@localhost ~]# export a=DL[root@localhost ~]# echo $aDL[root@localhost ~]# bash //在同一个sshd重新打开一个bash(相当于全局变量)[root@localhost ~]# echo $aDL
说明: 当在子shell设定变量后即便声明后也不能在父shell生效。
- 查看当前终端
[root@localhost ~]# w 15:34:47 up 2:18, 3 users, load average: 0.00, 0.01, 0.05USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot tty1 13:17 2:17m 0.04s 0.04s -bashroot pts/0 192.168.56.1 13:18 7.00s 0.20s 0.00s wroot 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*[{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 $a12312312[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变量及环境变量配置文件详解
- linux中环境变量及环境变量配置文件详解
- Linux shell和配置文件及环境变量
- 管道符和作业控制、shell变量和环境变量配置文件
- 管道符,作业控制,shell变量,全局变量,环境变量的配置文件
- shell变量(环境变量、参数变量)实例详解
- shell环境变量配置文件-L64
- Shell的环境变量配置文件
- shell之环境变量配置文件
- Shell环境变量配置文件
- shell基础-环境变量配置文件
- 环境变量和shell变量
- shell 变量 & 环境变量 (bash)
- SHELL环境变量+参数变量
- linux 环境变量,shell变量
- shell变量和环境变量
- shell变量之环境变量
- L24 shell基础知识(二)管道符-作业控制-shell变量-环境变量配置文件
- 添加
- 开机启动Tomcat以及隐藏运行窗口
- Creating Practical Scripts Part IV
- Kotlin报错统计
- c++_map_初探1
- shell变量及环境变量配置文件详解
- cocoaPods升级遇到的问题 以及升级ruby 升级cocoaPos 整理
- Collect
- javascript中Object实例训练一
- 安装crontab
- 通过ApplicationContextAware加载Spring上下文环境
- bzoj 1237: [SCOI2008]配对(DP)
- Session详解
- Cookie