根据手册,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的目的吗?
请参阅perl脚本中的FAQ {更改目录,修改我的环境}.当我退出剧本时,改变怎么会消失?如何让我的更改可见?
从最严格的意义上说,它无法完成 - 脚本作为一个与它开始的shell不同的进程执行.对进程的更改不会反映在更改后创建的任何子级中的父级中.
同样的答案也适用于Windows.
您可以cmd.exe
通过弄乱快捷方式和/或注册表来修改后续调用或子进程的起始目录.
当一个shell运行一个程序时,它实际上是forks然后执行该程序 - 在本例中是你的perl脚本.该分叉进程中的目录已更改,然后该进程终止.然后,您将返回到原始shell进程.