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、. 

 

 

 

posted @ 2018-02-22 11:45  有山有水有鬼  阅读(135)  评论(0编辑  收藏  举报