GNU/Linux >> Znalost Linux >  >> Linux

Limit linky Shebang v bash a linuxovém jádře

Pokud nechcete překompilovat jádro, abyste získali delší řádky Shebang, můžete napsat obal:

#!/bin/bash

if [[ $# -eq 0 ]]; then
    echo "usage: ${0##*/} script [args ...]"
    exit
fi

# we're going to expand a variable *unquoted* to use word splitting, but
# we don't want to have path expansion effects, so turn that off
set -f

shebang=$(head -1 "$1")
if [[ $shebang == '#!'* ]]; then
    interp=( ${shebang#\#!} )        # use an array in case a argument is there too
else
    interp=( /bin/sh )
fi

# now run it
exec "${interp[@]}" "[email protected]"

a poté spusťte skript jako:wrapper.sh script.sh


Omezeno na 127 znaků na 99,9 % systémů kvůli limitu vyrovnávací paměti kompilace jádra.

V jádře je omezena BINPRM_BUF_SIZE , nastavte v include/linux/binfmts.h .


Linux
  1. Jak vymazat historii příkazového řádku BASH v Linuxu

  2. Linux – konfigurace, kompilace a instalace vlastního linuxového jádra?

  3. Pokračování bash line po &&a || Zdokumentováno?

  1. Rozdíl mezi ‚A‘ na příkazovém řádku (bash)??

  2. Je povoleno místo mezi #! A /bin/bash v Shebangu?

  3. Linux – rozdíl mezi uživatelským prostorem a prostorem jádra?

  1. 5 Standardní dokončení K dispozici v příkazovém řádku Linux Bash

  2. spuštění php skriptu (funkce php) v linux bash

  3. Limit počtu znaků na příkazovém řádku Linuxu