okokdan 发表于 2005-7-17 20:15:42

请问:有关脚本执行的问题

有一个脚本HELLO,要执行这个脚本
请问下面语句有什么区别
.HELLO

./HELLO

. HELLO

. ./HELLO

watch_1394 发表于 2005-7-17 21:55:59

.HELLO是当前路径下的隐藏文件HELLO。
./HELLO表示当前路径下的HELLO文件,如果是可执行的话,就是你问题的正解。
. HELLO如果是在脚本中出现,表示将该文件的内容作为脚本的一部分载入。
. ./HELLO基本上同上,不过是明确指明路径的。
不知道说得对不对?不过无所谓了,反正那个zhy版主会来纠正的。 :mrgreen:

zhy2111314 发表于 2005-7-18 09:44:42

说的不错:)
在linux中 . 表示当前目录,..表示上一级目录,这个是基本的概念。
理解了这个后上面那些就容易理解了,还有就是以.开头的文件等同于windows下 的隐藏文件,也就是你ls时看不到,比如你执行ls和ls -a看看有什么不同,然后就是执行脚本时可以用几种不同方法(首先确定脚本为可执行,ls时为绿色,如果不是可执行,需要chmod +x script使脚本可执行):

./script 表示在当前shell的子shell中执行script脚本
. ./script = source ./script 这两个效果相同,表示新打开一个shell执行script脚本
exec ./script 表示新打开一个shell执行script脚本,执行结束退出。
然后你可以比较你的那些了 :-D

okokdan 发表于 2005-7-20 21:21:43

十分感谢大哥,不过我还是希望斑竹从变量的角度(环境变量等)来举例说明一下
./HELLO和. ./HELLO的执行区别
尤其是脚本中用到EXPORT
如:export a="mm"

haiyo

okokdan 发表于 2005-7-20 21:29:00

而且我记得. ./source
的执行会影响到用户的环境变量的,是吗
而./source当退出子shell后所有的变量都释放了,不会影响到用户变量的是吗?

如果是这样的话,那么在source的脚本中有何必加入EXPORT a=
"mm"呢,反正. ./source能够把子shell执行脚本中的变量"a"送到用户环境中(即在$提示符中输入"echo $a"能够看到"mm"值)
??
页: [1]
查看完整版本: 请问:有关脚本执行的问题