Escape arguments to nix-shell #! scripts

This commit is contained in:
Eelco Dolstra 2015-02-18 20:13:53 +01:00
parent dc7e8fae48
commit 1816ac0db1

View file

@ -195,8 +195,12 @@ for (my $n = 0; $n < scalar @ARGV; $n++) {
# or (undocumented) argv[0] does not contain "perl". Exploit
# the latter by doing "exec -a".
my $execArgs = $interpreter =~ /perl/ ? "-a PERL" : "";
# FIXME: escape arguments.
$envCommand = "exec $execArgs $interpreter $script @savedArgs";
sub shellEscape {
my $s = $_;
$s =~ s/'/'\\''/g;
return "'" . $s . "'";
}
$envCommand = "exec $execArgs $interpreter $script ${\(join ' ', (map shellEscape, @savedArgs))}";
}
elsif (substr($arg, 0, 1) eq "-") {