我有一个 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 脚本之前显式设置?$0
wrapper
$0
我知道我可以$0
从内部 wrapper
分配给,但我想在调用之前$0
设置要使用的值,所以我可以欺骗 Perl 认为正在运行的文件名。wrapper