01 shell运行方式
1、shell 是命令解释器
2、shell有多个版本
最原始的 shell 版本是 sh
主流 linux 系统用的是 bash ,是一种增强版本的 sh,它能补齐路径、命令但不能补齐参数
zsh 是比 bash 更强大的 shell,它除了能补齐路径、命令还能补齐参数
3、命令有无括号的区别
看一个有意思的例子
ps:命令之间用分号隔开
我不是已经进入到上一层目录了吗,为什么最后一个 pwd 显示的路径和我期望的不一样呢?
我们现在把小括号去掉再看一下
现在最后一次 pwd 的结果是符合我们预期的
那为什么有括号和没有括号会有这么大的差距呢?
shell接收到命令(cmd),创建一个子进程去执行这个命令,此时父进程会切换到后台等待回收子进程。
你套上小括号,表示这个程序作用于子进程,而不传到父进程,所以只会在子进程改变路径。当子进程结束,那些东西都会消失,切换到父进程时,父进程的路径没有发生改变。
去掉小括号,这些操作会传达给父进程,所以父进程的路径会发生改变。
4、当一个程序执行完,退出有退出码
echo $?
打印上一个程序的退出码
上一个程序是正常结束的打印0
上一个程序是非正常结束的打印非0数字
附上一个外部资料截图:
5、编写一个简单的脚本文件,并用两种方式去执行shell脚本
脚本文件的扩展名 .sh
test.sh
开头那行代码是告诉程序加载器,加载哪个解释器去执行这个文件
这个程序没有执行权限
给它权限并执行,所以可以 ./test.sh
如果不给权限,怎么能执行呢?
需要明确指出用哪个解释器去执行
6、source、.