分页: 1 / 1

[讨论]shell 内部命令 "." and "exec"

发表于 : 2006-06-23 16:41
kadox
如题
这两个命令都无法运行shell脚本,谁能给解释一下,是不是ubuntu除去了这两个命令?

发表于 : 2006-06-23 16:45
kadox
在/usr/bin下确实没"exec".

发表于 : 2006-06-24 13:30
sigma
./command可以的,你的那个脚本放在哪个分区,和这个可能也有关系的
你把脚本放到/bin下执行下看看

发表于 : 2006-06-24 17:46
zhan
我用 . 运行过一些的,呵呵,好象还有一些不行。不知道为什么
用 sh ***不就没有问题了么?

发表于 : 2006-06-25 10:56
kadox
多谢两位回复。
./command 和 sh 都能执行,我在一本参考书上看到有4种方法来运行shell脚本,但"."和"exec"不行,前面那两个可以,不知道为什么?

发表于 : 2006-06-25 13:00
gnix_oag
ubuntu并没有除去了这两个命令

这两个常见于脚本中

代码: 全选

   .            /脚本文件
是导入脚本文件的函数,或运行脚本,(只能用于脚本)

代码: 全选

  exec   /程序 
是在子进程中运行程序。

发表于 : 2006-10-15 17:35
echo_mu
kadox 写了:多谢两位回复。
./command 和 sh 都能执行,我在一本参考书上看到有4种方法来运行shell脚本,但"."和"exec"不行,前面那两个可以,不知道为什么?
. file #在当前shell下执行程序,即不产生子shell执行程序。
exec command #该命令不像其他命令那样以一个新进程运行,而是用command代替当前进程。试试"/bin/sh"以及"exec /bin/sh"。再看看进程表

发表于 : 2006-10-27 11:32
xdsnet
估计楼主还没有注意空格问题,其实 . 仅仅是把一段脚本文件引入到当前文件中一起执行,这种方法可以在引入的脚本文件不具有执行权限时仍然执行脚本内容。

发表于 : 2006-11-06 10:46
Zelgadiss
这二个是bash标准的内嵌脚本命令外部无法调用的

就像楼上所说的 . 是用来引入文件的
就像 bashrc 文件里,或者有些系统脚本里的 . XXX
就是说这里为了引入一段脚本

而我们平常用的 . 其实并不是命令, 而是指路径
./command 执行当前目录下的command命令

由于默认路径中是不可能包含当前路径的(除非你的$PWD在$PATH中)
否则当你输入 command 时, Bash则会在 $PATH 中查找是否则能够找到 command
当找不到的时候就不执行 而 ./command 的作用就是声明command在当前路径下

至于exec 我印象中 我只在IO重定向的时候用过...