Package: lintian
Version: 1.23.46
checks/scripts:
> my $checkbashisms;
> if ($shellscript) {
> $checkbashisms = $base eq "sh" ? 1 : 0;
> if ($base eq 'sh' or $base eq 'bash') {
> if (check_script_syntax("/bin/$base", $filename)) {
> tag("maintainer-shell-script-fails-syntax-check", $file);
> }
> }
> }
IMHO for the sake of consistency lintian should use the same interpreter when
checking for sh scripts (i.e. use /bin/bash instead of /bin/sh which can be
linked to <insert your favourite policy-compliant sh interpreter here>).
The following test case demonstrates a situation where lintian will throw
different results:
> $ cat /tmp/bc
> #!/bin/sh
> if [[ "$command" == @(help|h|\?) ]]; then
> COMPREPLY=( $( compgen -W "$commands" -- $cur ) )
> else
> _filedir
> fi
> $ bash -n /tmp/bc
> /tmp/bc: line 2: syntax error in conditional expression: unexpected token
> `(' /tmp/bc: line 2: syntax error near `@(h'
> /tmp/bc: line 2: ` if [[ "$command" == @(help|h|\?)
> ]]; then'
> $ dash -n /tmp/bc
> /tmp/bc: 2: Syntax error: "(" unexpected (expecting "then")
> $ posh -n /tmp/bc
> /tmp/bc:2: syntax error: `(' unexpected
> $ ksh -n /tmp/bc
> $ mksh -n /tmp/bc
> $ pdksh -n /tmp/bc
> /tmp/bc[3]: syntax error: `(' unexpected
> $ zsh -n /tmp/bc
So, if a .deb ships a #!/bin/sh maintainer script with the above code snippet
and lintian is run on that .deb, the
maintainer-shell-script-fails-syntax-check tag will only be triggered
when /bin/sh links to bash, dash, posh, or pdksh, but won't when linking to
ksh, mksh, or zsh.
Cheers,
--
Atomo64 - Raphael
Please avoid sending me Word, PowerPoint or Excel attachments.
See http://www.gnu.org/philosophy/no-word-attachments.html
Attachment:
signature.asc
Description: This is a digitally signed message part.