in reply to Using Perl's open() to investigate bash login environment
I would have thought, based on documentation I read, that seeing shell metacharacters in the open string would have caused perl to automatically invoke a shell.
Yes, you are executing /bin/sh (or whatever perl -V:sh returns) to execute the shell command /usr/bin/bash -login command builtin declare -p -F.
But why? It would make more sense to execute bash directly. With the missing -c that's causing your error, we get
open( my $spawnFH, "-|", "/usr/bin/bash", "-login", "-c" => "command builtin declare -p -F", )
Also, it makes no sense to make the shell configurable when the command you execute is a bash command, so I have hardcoded it.
|
|---|