一.source和点、bash \sh 、./script区别
1.source和点,执行脚本,只在当前shell环境中执行生效
2.指定bash\sh 解释器运行脚本,是开启subshell,开启子shell运行脚本 命令
3. ./script,都会指定shebang,通过解释器运行,也是开启subshell运行命令
二.父Shell的概念
pstree
|--sshd--sshd--bash--pstree
ps -ef
-f 显示UID、PID、PPID
-e 列出所有进程的信息,如同-A选项option
ps -ef --fortest
例如:18601是PID进程号,1186是父进程PPID号,所以它们之间是有区别的。
三.子Shell
在父Shell里面再创建一个Shell环境
四.多个子Shell
注意:只要输入exit,就能够退出Shell环境
五.创建进程列表(创建子Shell执行命令)
为什么学习子Shell
需要大家,执行一系列shell命令
ls ;cd ;pwd ;echo "Chd真帅"
列表,肯定是被包括起来的数据
Shell的进程列表理念,需要使用()小括号,如下执行方式,就称之为,进程列表
(ls ;cd ;pwd ;echo "Chd真帅")
六.检查是否在Shell环境中
linux默认的有关shell变量
#该变量的值特点,如果是0,就是父Shell环境,否则开辟子Shell去运行的
BASH_SUBSHELL
检查是否在子Shell中运行的命令
cd ~;pwd;ls ;cd /usr/;pwd;ls;echo $BASH_SUBSHELL
明确开启子Shell运行的命令
进程列表,并且开启子shell运行
(cd ~;pwd;ls ;cd /usr/;pwd;ls;echo $BASH_SUBSHELL)
七.子Shell嵌套运行
一个小括号,开启一个子Shell运行命令,还可以嵌套多个
(pwd;(echo $BASH_SUBSHELL))
注意:利用括号,开发子Shell的理念,以及检查,在shell脚本开发中,经常会用子shell进行多进程的处理,提高程序并发执行效率。
八.Shell知识回顾
1.shell执行多行命令
date;whoami
2.Shebang
#!/bin/bash
#! /bin/per1
#! /bin/python
3.执行脚本的方式
source my_first.sh
. my_first.sh
bash my_first.sh
./my_first.sh
#执行脚本的方式
cat test_date.sh
#! /bin/bash
echo "Now date time is: `date`"
bash test_date.sh
4.echo 命令,在Linux下格式化打印
cat echo_test.sh
#! /bin/bash
echo "The time and date are:"
date
echo ""
echo "Let's see who's logged into the system: "
who
chmod +x echo_test.sh
./echo_test.sh
5.echo能够输出变量的值
cat echo_var.sh
#! /bin/bash
echo "user info for username: ${USER}"
echo "user UID is : ${UID}"
echo "user Home is : " $HOME
sh echo_var.sh
6.转义字符的概念
所谓转义字符----->(\),还原符号,原本的意思,不会被阅读为特殊含义
"$"
' '
7.变量在脚本中的使用
变量被引用的时候,会赋予其值,脚本中的变量,在shell执行完毕后,就会消失,根据执行的方式决定。
当你用不同的方式,执行脚本,产生的后果也不一定一样
source和点,是在当前shell环境中,加载变量,执行脚本
bash或sh,去执行脚本的时候,是开启子shell运行的,变量也是在子shell环境中加载,子shell退出后,变量也就消失了。