关于系统函数

关于系统函数

code:
my @command=("cd /home")
foreach (@command)
{
                            system ($_);
}
执行
Can't exec "cd": No such file or directory at agent.pl line 14.
另外我试了`cd /`也是出现上面的错误。

cd只是 shell的"函数"吧
system("xxx")貌似也不算系统调用,虽然他叫system


QUOTE:
原帖由 adminsinx 于 2008-12-26 12:13 发表
code:
my @command=("cd /home")
system ($_);

执行
Can't exec "cd": No such file or directory at agent.pl line 14.
另外我试了`cd /`也是出现上面的错误。

找不到cd命令。cd是shell内嵌命令吧。

QUOTE:
$ type cd
cd is a shell builtin

如果有相应命令,使用绝对路径或者设置环境变量。
这么说更改目录不能用system来调用了吗?
my @command=("cd /home");
system($_);

我执行没有问题


QUOTE:
原帖由 adminsinx 于 2008-12-26 13:11 发表
这么说更改目录不能用system来调用了吗?

不太好的办法

[Copy to clipboard] [ - ]
CODE:
my $command=("sh -c 'pwd;cd /home;pwd'");



QUOTE:
原帖由 adminsinx 于 2008-12-26 12:13 发表
code:
my @command=("cd /home")
system ($_);

执行
Can't exec "cd": No such file or directory at agent.pl line 14.
另外我试了`cd /`也是出现上面的错误。

就光这两句话
system($_)能执行?


QUOTE:
原帖由 ynchnluiti 于 2008-12-26 13:29 发表

不太好的办法
my $command=("sh -c 'pwd;cd /home;pwd'");

这个是可以改变目录,但这个不能改变它的父进程,所以我在执行下面的命令(比如mkdir abc)的时候还是在当前目录而不是在/home下。


QUOTE:
原帖由 redicaps 于 2008-12-26 13:31 发表

就光这两句话
system($_)能执行?

不能,“望文生义”吧。


QUOTE:
原帖由 adminsinx 于 2008-12-26 13:46 发表

这个是可以改变目录,但这个不能改变它的父进程,所以我在执行下面的命令(比如mkdir abc)的时候还是在当前目录而不是在/home下。

你要的不是,cd /home;mkdir abc

[Copy to clipboard] [ - ]
CODE:
my $command=("sh -c 'pwd;cd /home;mkdir abc;pwd;cd -'");

而是在后面的代码中执行mkdir?

那不清楚怎么设置。