GNU/Linux >> Linux Esercitazione >  >> Linux

Limite della linea Shebang nel kernel bash e linux

Se non vuoi ricompilare il tuo kernel per ottenere righe Shebang più lunghe, puoi scrivere un wrapper:

#!/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]"

e quindi eseguire lo script come:wrapper.sh script.sh


Limitato a 127 caratteri sul 99,9% dei sistemi a causa del limite del buffer del tempo di compilazione del kernel.

È limitato nel kernel da BINPRM_BUF_SIZE , impostato in include/linux/binfmts.h .


Linux
  1. Come cancellare la cronologia della riga di comando BASH in Linux

  2. Linux:configurazione, compilazione e installazione di un kernel Linux personalizzato?

  3. È consentito lo spazio tra #! E /bin/bash a Shebang?

  4. Continuazioni della linea Bash dopo &&e || Documentato?

  5. Linux:differenza tra spazio utente e spazio kernel?

Kernel Linux e le sue funzioni

Gestisci e monitora i moduli del kernel Linux con Kmon

Installa Linux Kernel 4.15 in sistemi basati su RPM e DEB

3 modi per controllare la versione del kernel Linux nella riga di comando

19 Suggerimenti e trucchi utili per la riga di comando di Linux

Come cancellare la cronologia di Bash in Linux e Mac