shell基础知识(2)

8.6管道符、作业控制

sleep 100 暂停100秒
sleep 100& 直接放在后台暂停
 
 

8.7shell变量(上)
env系统内置变量
set不仅可以显示系统预设的变量,也可以连同用户自定义的变量显示出来
a=111
echo $a 显示为111
在linux下设置自定义变量有哪些规则
  1. 设定变量的格式为 “a=b”, 其中a为变量名,b为变量的内容,等号两边不能有空格;
  2. 变量名只能由英、数字以及下划线组成,而且不能以数字开头;
  3. 当变量内容带有特殊字符(如空格)时,需要加上单引号;
单引号不解析,是啥还是啥(有空格啥的也带)
双引号里面的变量就给解析了(本身有单引号就用双引号)
反引号里面加命令,不加变量
[root@localhost ~]# myname='Aming Li'
[root@localhost ~]# echo $myname Aming Li
有一种情况,需要你注意,就是变量内容中本身带有单引号,这就需要用到双引号了。
[root@localhost ~]# myname="Aming's" [root@localhost ~]# echo $myname Aming's
  1. 如果变量内容中需要用到其他命令运行结果则可以使用反引号;
[root@localhost ~]# myname=`pwd` [root@localhost ~]# echo $myname /root
  1. 变量内容可以累加其他变量的内容,需要加双引号;
[root@localhost ~]# myname="$LOGNAME"Aming [root@localhost ~]# echo $myname rootAming
在这里如果你不小心把双引号加错为单引号,将得不到你想要的结果
[root@localhost ~]# myname='$LOGNAME'Aming [root@localhost ~]# echo $myname $LOGNAMEAming

8.8shell变量(下)
w后看在哪个bash下,使用echo $SSH_TTY查看
pstree 这个指令会把linux系统中所有进程通过树形结构打印出来。exit退出当前shell终端。(可以看所有用户)
export其实就是声明一下这个变量的意思,让该shell的子shell也知道变量abc的值是123.如果export后面不加任何变量名,则它会声明所有的变量。export不能在别的机器上显示变量
unset 后跟变量名 取消变量
bash 命令,如果在当前shell中运行bash,则会进入一个新的shell,这个shell就是原来shell的子shell了。使用 bash 命令即可再打开一个shell,此时先前设置的 “aa=666” 变量已经不存在了,退出当前shell回到原来的shell, “aa=666” 变量还在,这时候export aa=666,他的子shell就有了,那要想设置的变量一直生效怎么办?有两种情况:
1) 要想系统内所有用户登录后都能使用该变量
需要在 “/etc/profile” 文件最末行加入 export aa=666然后运行 source /etc/profile 就可以生效了。此时再运行bash命令或者直接 su - test 账户可以看到效果。
2)只想让当前用户使用该变量
需要在用户主目录下的 .bashrc 文件最后一行加入 export aa=666 然后运行 source .bashrc 就可以生效了,这时候再登录quyifan账户,aa=666变量则不会生效了。

8.9 环境变量配置文件
/etc/profile /etc/bashrc
~/.bashrc ~/.bash_profile ~/.bash_history
~/.bash_logout 定义退出时需要做的操作,比如删除历史命令history
ps1 -> /etc/bashrc 就是左边名字这些东西
PS1='[u@h W]$ ' -> PS1='[u@h w]$ '
-> PS1='<u@h w>$ '
在这里多写了一个才一直出现错误哈哈


扩展
bashrc和bash_profile的区别 http://www.apelearn.com/bbs/thread-7719-1-1.html

原文地址:https://www.cnblogs.com/0329linux/p/7092529.html