在linux下,bash有三种方式可以调用其他脚本
(转自:http://openwares.net/linux/bash_call_other_scripts.html)
Introduction(unix shell 语言)
Bash(GNU Bourne-Again Shell)是许多Linux平台的内定Shell,是一个为GNU计划编写的Unix shell.
事实上,还有许多传统UNIX上用的Shell,像tcsh、csh、ash、bsh、ksh等等,Shell Script大致都类同,当您学会一种Shell以后,其它的Shell会很快就上手,大多数的时候,一个Shell Script通常可以在很多种Shell上使用。
Contents
- 1-----fork
这是最常用的调用方式,直接指定要调用的脚本的名字,也可以指定要使用的shell,比如
sh ${scriptname}
bash ${scriptname}
如果不指定使用的shell名称,则根据脚本的shebang来确定使用的脚本解释器。这种方式,shell会为调用脚本fork一个子进程来执行被调用的脚本。子进程继承父进程的环境变量,子进程结束时会有退出状态给父进程。
- 2-----source(.)
source或. 是bash的内建命令,在命令行上执行的时候,将会直接执行被调用脚本。
在脚本内source另一个脚本时,会将被调用脚本插入到调用脚本,并执行这些脚本。因此调用脚本和被调用脚本可以相互访问彼此的变量。
类似C/C++语言的include语句。
举个例子example:
在文件1-exe-env.sh中:@@@@@@@@@@
#!/bin/bash
echo "will setting env for GDB.."
#source /home/tonylau/mtklog/gdb-core-dump-env.sh/调用另一个脚本( source)
. /home/tonylau/mtklog/gdb-core-dump-env.sh/或者用这种方式( . )在文件gdb-core-dump-env.sh中:@@@@@@@@@@
#!/bin/bash
#add for python :gdb_debug
export PYTHONHOME=/usr/lib/python2.7
export PYTHONPATH=.:$PYTHONHOME:$PYTHONHOME/dist-packages
export PATH=$PATH:$PYTHONHOME:$PYTHONPATHbash命令行中调用脚本:@@@@@@@@@@
tonylau@tonylau-OptiPlex-780:~/mtklog$ source 1-exe-env.sh 或者是 . 1-exe-env.sh 或者 . ./1-exe-env.sh
will setting env for GDB..
tonylau@tonylau-OptiPlex-780:~/mtklog$ echo $PYTHONHOME
/usr/lib/python2.7
- 3-----exec
这是 shell 的内建命令,将使用被调用脚本来取代当前进程,当被调用脚本执行完毕后,调用脚本也随之结束。