我有一个 Perl 包装脚本,wrapper它exec是设置一些环境变量后的另一个工具。包装器可能调用的工具是wrapper符号链接的,它通过评估动态确定符号链接到它的工具basename($0)。这是一个人为的例子来说明:
[/tmp]$ cat wrapper
#!/usr/bin/perl
use File::Basename;
$ENV{'CUSTOM_ENVIRONMENT'} = '1';
my $scriptName = basename($0);
exec("scripts/${scriptName}");
[/tmp]$ chmod +x wrapper
[/tmp]$ cat scripts/foo
#!/bin/sh
echo "foo"
[/tmp]$ ln -s wrapper foo
[/tmp]$ ./foo
foo
我想避免在直接调用之前需要虚拟foo符号链接并明确设置。是否可以在调用 Perl 脚本之前显式设置?$0wrapper$0
我知道我可以$0从内部 wrapper分配给,但我想在调用之前$0设置要使用的值,所以我可以欺骗 Perl 认为正在运行的文件名。wrapper