On 2014-12-07, Raphael Geissert wrote: > On Sunday 07 December 2014 09:15:46 Vagrant Cascadian wrote: >> On 2014-12-06, Raphael Geissert wrote: >> > I've ran checkbashisms (from the 'devscripts' package) over the whole >> > archive and I found that your package has a /bin/sh script that uses a >> > "bashism". >> > >> > checkbashisms' output: >> >> possible bashism in ./usr/share/initramfs-tools/scripts/local-top/nbd >> >> line>> >> >> 84 ([^] should be [!]): >> >> *[^0-9]*) >> > >> > Not using bash (or a Debian Policy compliant shell interpreter that >> > doesn't provide such an extra feature) as /bin/sh is likely to lead to >> > errors or unexpected behaviours. Please be aware that dash is the >> > default /bin/sh. >> For initramfs-tools/scripts/*, I believe the shell actually used is >> typically either busybox shell (or klibc shell?), not dash, as these >> scripts are run from the initramfs environment. Not sure if this >> actually triggers issues with those shells as well. > > Perhaps they should have a proper shebang then?
Not sure what you mean by proper... busybox/klibc sh is installed as /bin/sh in the initramfs from which it is run. Because of this, any /bin/sh scripts in /usr/share/initramfs-tools/scripts/* might not be good targets for checkbashisms runs... I did write up a little example, which produced different results for dash, busybox sh, klibc sh, and bash: #!/bin/sh nbdports="/opt/ltsp/ltsp5 /opt/ltsp/i386 /opt/ltsp/amd64 /opt/ltsp/armhf 4535" for nbdport in $nbdports ; do echo echo "testing: $nbdport" nbdpath="" case "$nbdport" in *[^0-9]*) # non-numeric characters, assume a name rather than a port nbdpath="$nbdport" unset nbdport ;; esac echo "nbdpath: $nbdpath" echo "nbdport: $nbdport" done Bash and busybox sh produced the same output, which was the correct output, reporting the solely numeric entries as nbdport, and the other entries as nbdpath. Using the suggested alternative match "*[!0-9]*" worked correctly in all four shells, so the following patch should work correctly (though I haven't yet tested in the real world): diff --git a/debian/nbd-client.initrd b/debian/nbd-client.initrd index 96f89ae..cd1bfe4 100644 --- a/debian/nbd-client.initrd +++ b/debian/nbd-client.initrd @@ -81,7 +81,7 @@ case "$nbdroot" in esac case "$nbdport" in - *[^0-9]*) + *[!0-9]*) # non-numeric characters, assume a name rather than a port nbdpath="$nbdport" unset nbdport live well, vagrant
signature.asc
Description: PGP signature