parallel: Fixed bug #40137: SHELL not bash: Warning when exporting funcs.

This commit is contained in:
Ole Tange 2013-09-28 17:44:54 +02:00
parent 2bbfdfec60
commit 358b9091f6
3 changed files with 15 additions and 1 deletions

View file

@ -1093,6 +1093,12 @@ sub parse_env_var {
my @qcsh = map { my $a=$_; "setenv $a " . env_quote($ENV{$a}) } @vars; my @qcsh = map { my $a=$_; "setenv $a " . env_quote($ENV{$a}) } @vars;
my @qbash = map { my $a=$_; "export $a=" . env_quote($ENV{$a}) } @vars; my @qbash = map { my $a=$_; "export $a=" . env_quote($ENV{$a}) } @vars;
my @bash_functions = grep { substr($ENV{$_},0,4) eq "() {" } @vars; my @bash_functions = grep { substr($ENV{$_},0,4) eq "() {" } @vars;
if(@bash_functions) {
# Functions are not supported for all shells
if($ENV{'SHELL'} !~ m:/(bash|rbash|zsh|rzsh|dash|ksh):) {
::warning("Shell functions may not be supported in $ENV{'SHELL'}\n");
}
}
push @qbash, map { my $a=$_; "eval $a\"\$$a\"" } @bash_functions; push @qbash, map { my $a=$_; "eval $a\"\$$a\"" } @bash_functions;
# Create lines like: # Create lines like:

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -j10 -k -L1 cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | stdout parallel -j10 -k -L1
echo '### Test bug #34241: --pipe should not spawn unneeded processes' echo '### Test bug #34241: --pipe should not spawn unneeded processes'
seq 5 | ssh csh@lo parallel -k --block 5 --pipe -j10 cat\\\;echo Block_end seq 5 | ssh csh@lo parallel -k --block 5 --pipe -j10 cat\\\;echo Block_end
@ -9,6 +9,10 @@ echo '### --env _'
echo '### --env _ with explicit mentioning of normally ignored var $DISPLAY' echo '### --env _ with explicit mentioning of normally ignored var $DISPLAY'
fUbAr="OK FUBAR" parallel -S csh@lo --env DISPLAY,_ echo '$fUbAr $DISPLAY' ::: test fUbAr="OK FUBAR" parallel -S csh@lo --env DISPLAY,_ echo '$fUbAr $DISPLAY' ::: test
echo 'bug #40137: SHELL not bash: Warning when exporting funcs'
. <(printf 'myfunc() {\necho $1\n}'); export -f myfunc; parallel --env myfunc -S lo myfunc ::: no_warning
. <(printf 'myfunc() {\necho $1\n}'); export -f myfunc; SHELL=/bin/sh parallel --env myfunc -S lo myfunc ::: warning
echo '### --filter-hosts --slf <()' echo '### --filter-hosts --slf <()'
parallel --nonall --filter-hosts --slf <(echo localhost) echo OK parallel --nonall --filter-hosts --slf <(echo localhost) echo OK

View file

@ -10,6 +10,10 @@ Block_end
DISPLAY: Undefined variable. DISPLAY: Undefined variable.
### --env _ with explicit mentioning of normally ignored var $DISPLAY ### --env _ with explicit mentioning of normally ignored var $DISPLAY
OK FUBAR :0.0 test OK FUBAR :0.0 test
bug #40137: SHELL not bash: Warning when exporting funcs
no_warning
warning
parallel: Warning: Shell functions may not be supported in /bin/sh
### --filter-hosts --slf <() ### --filter-hosts --slf <()
OK OK
### bug #40002: --files and --nonall seem not to work together: ### bug #40002: --files and --nonall seem not to work together: