从Windows cmd.exe更改Perl目录

dls*_*dls 4 perl cmd chdir

根据手册,chdir ,如果可能的话,将工作目录更改为EXPR.

从cmd.exe执行时,此脚本:

my $path = 'C:\\some\\path\\';
print "$path\n";
chdir("$path") or die "fail $!";
Run Code Online (Sandbox Code Playgroud)

结果输出:

C:\some\path\
Run Code Online (Sandbox Code Playgroud)

但是当我返回命令提示符时 - 我仍然在原始目录中.我误解了chdir的目的吗?

Sin*_*nür 7

请参阅perl脚本中的FAQ {更改目录,修改我的环境}.当我退出剧本时,改变怎么会消失?如何让我的更改可见?

从最严格的意义上说,它无法完成 - 脚本作为一个与它开始的shell不同的进程执行.对进程的更改不会反映在更改后创建的任何子级中的父级中.

同样的答案也适用于Windows.

您可以cmd.exe通过弄乱快捷方式和/或注册表来修改后续调用或子进程的起始目录.


Con*_*ler 6

当一个shell运行一个程序时,它实际上是forks然后执行该程序 - 在本例中是你的perl脚本.该分叉进程中的目录已更改,然后该进程终止.然后,您将返回到原始shell进程.