shell环境变量了解

管道符和任务作业控制

| 管道符,将前面输出的结果作为后面命令的输入,如:

[root@localhost tmp]# cat passwd |grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

ctrl+z 暂停一个任务

[root@localhost tmp]# vim passwd 

[1]+ 已停止 vim passwd                  vim编辑暂停状态

jobs 查看后台暂停的任务

[root@localhost tmp]# jobs
[1]- 已停止 vim passwd
[2]+ 已停止 vim 3.txt

bg 把一个可以后台执行的任务放入后台执行

[root@localhost tmp]# sleep 10000
^Z                            运行数字迭代,并让它暂停运行
[3]+ 已停止 sleep 10000
[root@localhost tmp]# jobs
[1] 已停止 vim passwd
[2]- 已停止 vim 3.txt
[3]+ 已停止 sleep 10000             查看其在后台的排序位置
[root@localhost tmp]# bg 3          
[3]+ sleep 10000 &                  运行bg 3 让其在后台启动运行
[root@localhost tmp]# jobs
[1]- 已停止 vim passwd              使用jobs查看后台运行命令
[2]+ 已停止 vim 3.txt
[3] 运行中 sleep 10000 &

fg 恢复后台暂停或正在运行的任务,让其显示到前台当中

[root@localhost tmp]# jobs
[1]- 已停止 vim passwd       
[2]+ 已停止 vim 3.txt
[3] 运行中 sleep 10000 &
[root@localhost tmp]# fg 2
vim 3.txt                           把后台暂停编辑的3.txt文件恢复到前台终端继续编辑

ls: 无法访问aaaa.txt: 没有那个文件或目录
~    

一个执行命令后加上&可以直接放入后台运行

[root@localhost tmp]# sleep 300 &
[4] 2374
[root@localhost tmp]# jobs
[1]- 运行中 sleep 300 &          &放入后台运行

shell变量

env查看系统中默认配置拥有的变量

[root@localhost ~]# env
XDG_SESSION_ID=1
HOSTNAME=localhost
TERM=xterm
SHELL=/bin/bash
HISTSIZE=2000
SSH_CLIENT=192.168.1.113 60077 22
SSH_TTY=/dev/pts/0
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
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
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
SSH_CONNECTION=192.168.1.113 60077 192.168.1.223 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/0
_=/usr/bin/env

HOSTNMAE:表示主机的名称。
SHELL:表示当前用户的shell类型。
HISTSIZE:表示历史记录数。
MAIT:表示当前用户的邮件存放目录。
PATH:决定了shell将到那些目录中寻找命令或程序。
PWD:表示当前目录。
LANG:表示与语言相关的环境变量,多语言环境可以修改次环境变量。
HOME:表示当前用户的家目录。
LOGNAME:表示当前用户登录名。

自定义变量
自定义变量规则
设定变量的格式为a=b,其中a为变量名,b为变量的内容,等号两边不能有空格
变量名只能由字母,数字以及下划线组成,而且不能以数字开头
当变量值带有特殊字符(如空格)时,需要加上单引号

命名一个带有空格的字符串引用变量时需要加上单引号

[root@localhost /]# a=hello world
-bash: world: 未找到命令
[root@localhost /]# a='hello world'
[root@localhost /]# echo $a
hello world

如果变量内容中需要用到其他命令,运行则需要使用反引号

[root@localhost /]# fd=`df -h`
[root@localhost /]# echo $fd
文件系统 容量 已用 可用 已用% 挂载点
 /dev/sda3 18G 1.8G 16G 11% 
/ devtmpfs 487M 0 487M 0% 
/dev tmpfs 497M 0 497M 0%
 /dev/shm tmpfs 497M 6.6M 490M 2% 
/run tmpfs 497M 0 497M 0%
 /sys/fs/cgroup /dev/sda1 197M 108M 89M 55% 
/boot tmpfs 100M 0 100M 0%
 /run/user/0

安装pstree命令:yum install psmisc命令安装。

pstree命令会把linux系统中的所有进程以树形结构显示出来。在父shell中设定变量后

进入字shell时,该变量是不会生效的。如果让这个变量在子shell中生效,要用到export指令

[root@localhost ~]# pstree |grep bash 
        |-sshd---sshd---bash-+-grep 
[root@localhost ~]# bash
[root@localhost ~]# history
[root@localhost ~]# pstree |grep bash
        |-sshd---sshd---bash---bash-+-grep

export变量申明
用export申明下自定义的abc变量,让该shell的子shell也知道变量abc的值是123.设置变量之后,如果想取消某个变量,使用unset+变量名

[root@localhost ~]# abc=123 
[root@localhost ~]# echo $abc 
123 
[root@localhost ~]# bash 
[root@localhost ~]# echo $abc 
[root@localhost ~]# exit 
exit 
[root@localhost ~]# export abc 
[root@localhost ~]# echo $abc 
123 
[root@localhost ~]# bash 
[root@localhost ~]# echo $abc 
123
[root@localhost ~]# echo $abc
123
[root@localhost ~]# unset abc
[root@localhost ~]# echo $abc

环境变量配置文件

/etc/profile:这个文件预设了几个重要的变量。
例如PATH,USER,LOGNAME,MALL,INPUTRC,HOSTNAME,HISTSIZE,umask等
/etc/bashrc:这个文件主要预设umask以及PS1。
这个PS1就是我们在输入命令时前面的那串字符串。linux系统的PS1就是[root@localhost ~]#.PS1的值如下


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

系统和用户变量配置文件
系统下变量在etc目录下,如
/etc/bashrc和/etc/profile
用户变量配置文件在用户家目录下
/home/.../.bashrc 加载的默认bash环境
/home/..../.bash_profile 加载用户环境下的启动(登录)配置文件
/home/.../.bash_histroy 用户环境下的历史命令记录
/home/..../.bash_logout 用户环境下的退出操作配置环境文件

猜你喜欢

转载自blog.51cto.com/8844414/2134756