Skip to contentSkip to conversation

Fix bash path in shebangs

PATCH In review [email protected] 2 participants 6 messages Jul 27, 2017 – Sep 13, 2017

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Fix bash path in shebangs

From: Alan Somers <[email protected]>

"/bin/bash" is a Linuxism. "/usr/bin/env bash" is portable.

Signed-off-by Alan Somers <[email protected]>

---
 examples/performance-thread/l3fwd-thread/test.sh | 2 +-
 usertools/dpdk-setup.sh                          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
examples/performance-thread/l3fwd-thread/test.sh +1 -1
index b7718b622..eb1fe2dc2 100755
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
 
 case "$1" in
 
usertools/dpdk-setup.sh +1 -1
index c4fec5a63..ebf36f830 100755
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
 
 #   BSD LICENSE
 #
Signature · 1 line
2.13.3
#2 lore raw
Quoted 9 lines · Thomas Monjalon

27/07/2017 22:12, [email protected]:

Quoted 3 lines

From: Alan Somers <[email protected]>

"/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.

#3 lore raw

13/09/2017 16:35, alan somers:

Quoted 12 lines · Thomas Monjalon
Quoted 8 lines

27/07/2017 22:12, [email protected]:

Quoted 3 lines

From: Alan Somers <[email protected]>

"/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.

#4 lore raw
Quoted 11 lines · Thomas Monjalon

13/09/2017 16:35, alan somers:

Quoted 10 lines · Thomas Monjalon
Quoted 8 lines

27/07/2017 22:12, [email protected]:

Quoted 3 lines

From: Alan Somers <[email protected]>

"/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?

Quoted 7 lines
Quoted 2 lines

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

#5 lore raw

13/09/2017 17:55, alan somers:

Quoted 17 lines · Thomas Monjalon
Quoted 16 lines

13/09/2017 16:35, alan somers:

Quoted 12 lines · Thomas Monjalon
Quoted 8 lines

27/07/2017 22:12, [email protected]:

Quoted 3 lines

From: Alan Somers <[email protected]>

"/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?

Quoted 8 lines
Quoted 2 lines

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