用户在命令行输入命令后,一般情况下Shell会fork
并exec
该命令,但是Shell的内建命令例外,执行内建命令相当于调用Shell进程中的一个函数,并不创建新的进程。以前学过的cd
、alias
、umask
、exit
等命令即是内建命令,凡是用which
命令查不到程序文件所在位置的命令都是内建命令,内建命令没有单独的man手册,要在man手册中查看内建命令,应该
$ man bash-builtins
本节会介绍很多内建命令,如export
、shift
、if
、eval
、[
、for
、while
等等。内建命令虽然不创建新的进程,但也会有Exit Status,通常也用0表示成功非零表示失败,虽然内建命令不创建新的进程,但执行结束后也会有一个状态码,也可以用特殊变量$?
读出。
执行脚本
script.sh
:
第一行开头,并且是#!
(称为Shebang),表示该脚本使用后面指定的解释器/bin/sh
解释执行。如果把这个脚本文件加上可执行权限然后执行:
$ chmod +x script.sh
$ ./script.sh
执行上述脚本相当于执行程序
$ /bin/sh ./script.sh
不过后一种方式执行的好处是不需要script.sh
文件具有可执行权限。
交互Shell(bash
)fork
/exec
一个子Shell(sh
)用于执行脚本,父进程bash
等待子进程sh
终止。
如果将命令行下输入的命令用()括号括起来,那么也会fork
出一个子Shell执行小括号中的命令,一行中可以输入由分号;隔开的多个命令,比如:
$ (cd ..;ls -l)
和上面两种方法执行Shell脚本的效果是相同的,cd ..
命令改变的是子Shell的PWD
,而不会影响到交互式Shell。然而命令
$ cd ..;ls -l
则有不同的效果,cd ..
命令是直接在交互式Shell下执行的,改变交互式Shell的PWD
,然而这种方式相当于这样执行Shell脚本:
$ source ./script.sh
或者
$ . ./script.sh
source
或者.
命令是Shell的内建命令,这种方式也不会创建子Shell,而是直接在交互式Shell下逐行执行脚本中的命令。
分享到:
相关推荐
Linux 入门和Shell入门的好资料 完全免费 好好利用
shell入门shell入门shell入门shell入门shell入门shell入门shell入门shell入门shell入门shell入门
shell shell练习 shell入门 shell shell练习 shell入门
大数据shell入门到精通视频教程 ,教程很基础,很实用
shell入门的一本书,shell入门的一本书,shell入门的一本书,!!!
中文shell十三问--shell入门 第三种变量的替换方法是只有当变量已赋值时才用指定值替换形式: ${variable: +value} 只有变量variable已赋值时,其值才用value替换,否则不进行任何替换,例如: $ERROPT=A $...
Shell编程详解,shell入门,shell实例
Korn Shell入门脚本Korn Shell入门脚本Korn Shell入门脚本Korn Shell入门脚本Korn Shell入门脚本Korn Shell入门脚本
Linux Shell入门基础,Linux Shell入门基础
人性化解析shell脚本,保证快速入门sh,bash,shell入门.pdf
Shell 入门实战到精通
Shell入门实战到精通
shell 入门级教程,非常不错啊,我正在学。
文档名称 Shell 从入门到精通 腾讯课堂直播 http://opsdev.ke.qq.com 博客 http://lizhenliang.blog.51cto.com GitHub https://github.com/lizhenliang/Shell-Python-Document QQ 技术群 323779636(Shell/...
Shell入门教程,适合初学者,还是很不错的
shell入门必读,linux,bash, dash
shell入门到进阶,脚本机动化
Linux Shell脚本系列教程(一):Shell入门.docx
linux编程之shell入门借鉴.pdf
新手linux-shell入门借鉴.pdf