[PATCH] ash: fix command name of shell scripts

Denys Vlasenko vda.linux at googlemail.com
Mon Oct 11 00:58:13 UTC 2021


On Sun, Oct 10, 2021 at 11:09 PM <mikma.bbne at lists.m7n.se> wrote:
> Hello,
>
> when executing a script with ash from busybox in the shebang then the command name will contain "sh" instead of the name of the script as expected.

Can't reproduce: I see script name in comm field, not "sh" or "ash":

$ cat comm.tests
{
echo "#!$THIS_SH"
echo 'procdir=/proc/$$'
echo 'echo "  /proc/N/exe:  $(basename $(readlink $procdir/exe))"'
echo 'echo "  /proc/N/comm: $(cat $procdir/comm)"'
} >SCRIPT.sh
chmod 755 SCRIPT.sh
echo ./SCRIPT.sh:
./SCRIPT.sh
echo "exec ./SCRIPT.sh:"
(exec ./SCRIPT.sh)
echo sh ./SCRIPT.sh:
$THIS_SH ./SCRIPT.sh
rm SCRIPT.sh

$ THIS_SH=/bin/bash bash comm.tests
./SCRIPT.sh:
  /proc/N/exe:  bash
  /proc/N/comm: SCRIPT.sh
exec ./SCRIPT.sh:
  /proc/N/exe:  bash
  /proc/N/comm: SCRIPT.sh
sh ./SCRIPT.sh:
  /proc/N/exe:  bash
  /proc/N/comm: bash

$ THIS_SH=/bin/ash ash comm.tests
./SCRIPT.sh:
  /proc/N/exe:  ash
  /proc/N/comm: SCRIPT.sh
exec ./SCRIPT.sh:
  /proc/N/exe:  ash
  /proc/N/comm: SCRIPT.sh
sh ./SCRIPT.sh:
  /proc/N/exe:  ash
  /proc/N/comm: ash

$ ash --help
BusyBox v1.35.0.git (2021-09-07 23:38:50 CEST) multi-call binary.
...

$ bash --help
GNU bash, version 5.0.17(1)-release-(x86_64-redhat-linux-gnu)
...


More information about the busybox mailing list