我有一个 perl 程序,它接受一个参数(意图是改变目录“cd”)而不产生子进程。
$FPATH/pcd.pl 允许用户在多个可能的目录候选中进行选择,等等。
诀窍是到达所需目录而不留在生成的进程中。以下是我无法运行的调用(ksh shell):
.$FPATH/pcd.pl $*|读取目录 .cd $dir
无论将哪个实际目录返回到“$dir”,“.cd $dir”都无法到达所需目录。请指教。谢谢。
答案1
我不太明白你那行代码;也许它被弄乱了。
我的方法略有不同:首先,创建一个别名,获取程序的输出并制作一个 cd 到该输出:
alias mycd='cd $(select-dir)'
然后让程序将菜单打印到 stderr,并将选择打印到 stdout,例如像这样:
#!/usr/bin/perl
use 5.010;
use strict;
use warnings;
my @entries = ('..', grep {-d} glob("*"));
for my $i (0..$#entries) {
printf STDERR (" %2d: $entries[$i]/\n", $i);
}
$| = 1;
print STDERR ("cd to: ");
say($entries[<>]);