GNU/Linux >> Tutoriales Linux >  >> Linux

La línea Shebang con el comando `#!/usr/bin/env --argument` falla en Linux

Parece que esto se debe a que Linux (a diferencia de BSD) solo pasa un único argumento al comando shebang (en este caso, env).

Esto se ha discutido extensamente en StackOverflow.


Encontré esto a través del comentario de @rampion:

Lo que pasa es que el kernel procesa los dos primeros caracteres del archivo buscando #!. Si se encuentran, omite todos los caracteres de espacio en busca de un carácter que no sea de espacio y extrae la ruta del intérprete, que debe ser un ejecutable real y no otro script, aunque Linux lo amplía para permitir el procesamiento recursivo de scripts. Habiendo encontrado eso, salta al primer carácter que no es espacio donde lleva desde allí al siguiente carácter de nueva línea y lo pasa como un solo argumento al comando. No hay procesamiento 'shell' de comillas u otros metacaracteres. Es todo muy simple y de fuerza bruta. Por lo tanto, no puede volverse sofisticado con las opciones allí. Obtiene exactamente un espacio en blanco de argumento incluido y 'perl -w' es lo que el kernel ve aquí y lo transmite.

Fuente:http://lists.gnu.org/archive/html/bug-sh-utils/2002-04/msg00020.html


Linux
  1. ¿Cuál es el uso del comando ‘/usr/bin/[‘ [Corchete] en Linux?

  2. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  3. Linux – ¿Fusionar /usr/bin y /usr/sbin en /bin (gnu/linux)?

  4. ¿Cuál es la diferencia entre #!/usr/bin/env bash y #!/usr/bin/bash?

  5. ¿Cuáles son los significados de /usr/sbin, /usr/local/sbin y /usr/local/bin?

Comando Diff en Linux con ejemplos

Comando de corte de Linux con ejemplos prácticos

Cómo comprobar la versión del sistema operativo con la línea de comandos de Linux

Linux:¿/sbin/init no existe?

Comando Uniq en Linux explicado con ejemplos

Uso del comando sed de Linux con ejemplos