[dpdk-dev] Fix bash path in shebangs
Checks
Commit Message
From: Alan Somers <asomers@gmail.com>
"/bin/bash" is a Linuxism. "/usr/bin/env bash" is portable.
Signed-off-by Alan Somers <asomers@gmail.com>
---
examples/performance-thread/l3fwd-thread/test.sh | 2 +-
usertools/dpdk-setup.sh | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
Comments
27/07/2017 22:12, asomers@gmail.com:
> From: Alan Somers <asomers@gmail.com>
>
> "/bin/bash" is a Linuxism. "/usr/bin/env bash" is portable.
Why is it an issue?
Can you run dpdk-setup.sh on a non-Linux system?
On Wed, Sep 13, 2017 at 3:37 AM, Thomas Monjalon <thomas@monjalon.net> wrote:
> 27/07/2017 22:12, asomers@gmail.com:
>> From: Alan Somers <asomers@gmail.com>
>>
>> "/bin/bash" is a Linuxism. "/usr/bin/env bash" is portable.
>
> Why is it an issue?
>
> Can you run dpdk-setup.sh on a non-Linux system?
>
Nope, because even dpdk-setup.sh assumes that bash is located at
/bin/bash. But "/usr/bin/env bash" works everywhere.
13/09/2017 16:35, alan somers:
> On Wed, Sep 13, 2017 at 3:37 AM, Thomas Monjalon <thomas@monjalon.net> wrote:
> > 27/07/2017 22:12, asomers@gmail.com:
> >> From: Alan Somers <asomers@gmail.com>
> >>
> >> "/bin/bash" is a Linuxism. "/usr/bin/env bash" is portable.
> >
> > Why is it an issue?
> >
> > Can you run dpdk-setup.sh on a non-Linux system?
>
> Nope, because even dpdk-setup.sh assumes that bash is located at
> /bin/bash. But "/usr/bin/env bash" works everywhere.
No, I mean: can you run dpdk-setup.sh on a non-Linux system after your change?
This script configures a Linux system, so I want to understand
what situation you are trying to fix.
On Wed, Sep 13, 2017 at 9:39 AM, Thomas Monjalon <thomas@monjalon.net> wrote:
> 13/09/2017 16:35, alan somers:
>> On Wed, Sep 13, 2017 at 3:37 AM, Thomas Monjalon <thomas@monjalon.net> wrote:
>> > 27/07/2017 22:12, asomers@gmail.com:
>> >> From: Alan Somers <asomers@gmail.com>
>> >>
>> >> "/bin/bash" is a Linuxism. "/usr/bin/env bash" is portable.
>> >
>> > Why is it an issue?
>> >
>> > Can you run dpdk-setup.sh on a non-Linux system?
>>
>> Nope, because even dpdk-setup.sh assumes that bash is located at
>> /bin/bash. But "/usr/bin/env bash" works everywhere.
>
> No, I mean: can you run dpdk-setup.sh on a non-Linux system after your change?
>
> This script configures a Linux system, so I want to understand
> what situation you are trying to fix.
I'm using Ceph, which imports DPDK whole (and several other 3rd party
projects too). I'm not sure which parts of these 3rd party projects
Ceph is actually using, but it's easier to fix the bash path
everywhere than to determine which places need it to be fixed. And
AFAIK it doesn't cause any problems on any modern Unix derivative.
-Alan
13/09/2017 17:55, alan somers:
> On Wed, Sep 13, 2017 at 9:39 AM, Thomas Monjalon <thomas@monjalon.net> wrote:
> > 13/09/2017 16:35, alan somers:
> >> On Wed, Sep 13, 2017 at 3:37 AM, Thomas Monjalon <thomas@monjalon.net> wrote:
> >> > 27/07/2017 22:12, asomers@gmail.com:
> >> >> From: Alan Somers <asomers@gmail.com>
> >> >>
> >> >> "/bin/bash" is a Linuxism. "/usr/bin/env bash" is portable.
> >> >
> >> > Why is it an issue?
> >> >
> >> > Can you run dpdk-setup.sh on a non-Linux system?
> >>
> >> Nope, because even dpdk-setup.sh assumes that bash is located at
> >> /bin/bash. But "/usr/bin/env bash" works everywhere.
> >
> > No, I mean: can you run dpdk-setup.sh on a non-Linux system after your change?
> >
> > This script configures a Linux system, so I want to understand
> > what situation you are trying to fix.
>
> I'm using Ceph, which imports DPDK whole (and several other 3rd party
> projects too). I'm not sure which parts of these 3rd party projects
> Ceph is actually using, but it's easier to fix the bash path
> everywhere than to determine which places need it to be fixed. And
> AFAIK it doesn't cause any problems on any modern Unix derivative.
If I understand well, you don't know which case it is fixing,
but you prefer the shebang being this way.
I am a bit reluctant to fix something if we don't know what is the bug.
Maybe it does not hurt, but there can be some drawbacks:
- the chosen bash binary depends on the environment PATH
- it makes impossible to add some options in the shebang
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
case "$1" in
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# BSD LICENSE
#